位置: 编程技术 - 正文

OpenGL编程逐步深入(十)索引绘制(简述opengl的编程步骤)

编辑:rootadmin
准备知识

推荐整理分享OpenGL编程逐步深入(十)索引绘制(简述opengl的编程步骤),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:opengl csdn,opengl编程精粹,opengl gpu编程,opengl编程实例,opengl编程实例,opengl编程语言,opengl 编程,opengl 编程,内容如对您有帮助,希望把文章链接给更多的朋友!

OpenGl提供了一些绘图函数。到目前为止我们使用的glDrawArrays绘图函数属于”顺序绘制”。这意味着顶点缓冲区从指定的偏移量开始被扫描,每X(点为1,直线为2等)个顶点构成一个图元。这样使用起来非常方便,缺点是当多个图元共用一个顶点时,这个顶点必须在顶点缓冲区中出现多次。也就是说,这些顶点没有共享的概念。属于”索引绘制”的函数则提供这种共享机制。我们除了一个顶点缓存区外,还有一个索引缓存区用来存放顶点的索引值。索引缓存区的扫描和顶点缓存区类似,以每X个索引对应的顶点构成一个基本图元。共享机制在提高内存使用效率上非常重要,因为计算机中的绝大多数图形对象都是三角形网格构成的,这些三角形有很多都是共用顶点。

我们来看一下顺序绘制:

如果是绘制三角形,GPU会将这些顶点分成以下几组:V0/1/2, V3/4/5, V6/7/8。

接下来看一下索引绘制:

这种情况下,GPU会使用这几组顶点来绘制三角形:V2/0/1, V5/2/4, V6/5/7。

使用索引绘制方式需要创建索引缓冲区,索引缓存区中的数据还要受到顶点缓冲区的限制,绘图调用的API函数也和之前不同。

项目配置

参见前面的教程。

程序代码

清单1.主程序代码tutorial.cpp

代码解读OpenGL编程逐步深入(十)索引绘制(简述opengl的编程步骤)

创建索引缓存句柄,对索引缓冲区的操作通过该句柄完成。

为了演示顶点共享,我们需要更复杂的网格模型。很多教程都使用旋转立方体来演示这个知识点,这需要8个顶点和个三角形。这里我们使用旋转四面体代替,它只需要4个顶点和4个三角形。

当我们从上面(即沿着Y轴)观看这些顶点时,顶点布局如下图所示:

索引缓冲区由一个索引数组组成,每个索引对应顶点缓冲区中的一个顶点。同时观察索引数组和上面的顶点分布图会发现最后一个三角形构成四面体的底面,另外三个三角形作为侧表面(这个例子中四面体并不是对称的)。

上面代码用于创建索引缓冲区并向其中填充数据,不同的是这里使用的参数是GL_ELEMENT_ARRAY_BUFFER,而创建顶点缓冲区使用的参数为GL_ARRAY_BUFFER。

和顺序绘制方式一样,在绘制之前我们也要调用glBindBuffer,同时使用GL_ELEMENT_ARRAY_BUFFER作为参数。

这里我们需要使用glDrawElements代替glDrawArrays。第一个参数指定要绘制的图元类型,第二个参数指定用来生成图元的索引数量,第三个参数是每个索引的数据类型,这里可供选择的有GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT, GL_UNSIGNED_INT。最后一个参数用来告诉GPU开始扫描索引缓冲区的偏移量,这里指定为0,表明从第一个索引开始。这个参数是非常有用的,因为有时候多个模型的顶点索引存放在同一个索引缓冲区。

运行效果

可以看到一个四面体在窗口中旋转。

OpenGL轨迹球代码 转自:

Cocos openGL编写自己的Shaders cocos2d-x3.5,lua环境下实现按钮变灰;代码调用:localprogram=cc.GLProgram:create(Shaders/Gray.vsh,Shaders/Gray.fsh)program:bindAttribLocation(cc.ATTRIBUTE_NAME_POSITION,cc.VERTEX_ATTRIB

OpenGL--选择和反馈 理论基础选择和反馈:整的来说就是鼠标点击,然后算出到底点击的是哪个物体。在选择和反馈模式下,绘制信息返回给应用程序而不是像在渲染模式

标签: 简述opengl的编程步骤

本文链接地址:https://www.jiuchutong.com/biancheng/369595.html 转载请保留说明!

上一篇:OpenGL--二次几何体(opengl二维绘图函数)

下一篇:OpenGL轨迹球代码(轨迹球怎么调出来)

  • 增值税发票验真伪怎么验
  • 免税收入是什么票据类型
  • 物业收电费有问题找谁解决
  • 发票复核人一定要是财务吗
  • 股权转让开票怎么做账
  • 刚成立的公司没有营业额怎么报税
  • 外贸企业当月没交税
  • 个人到税务局开发票要带什么东西
  • 滞留票怎么做账务处理
  • 交印花税需要身份证吗
  • 营业外支出企业所得税怎么填
  • 社保年年递增
  • 改建的固定资产
  • 营改增后加工行业的税率是多少?
  • 股票授予代替工资缴税吗?
  • 案例分析两个分公司转资金怎么做账?
  • 没有收款人复核人的发票能报销吗
  • 发放活动奖金支出怎么入账
  • 旅行社开具的发票能否作废
  • 服务业结转成本怎么算
  • 小规模企业税务简易注销
  • 账面上挂的其他应付款怎么冲平?
  • 固定资产的折旧从什么时候开始
  • 自建商品房转为自用增值税
  • 去国外参加展会带什么东西
  • 以前年度亏损在哪个报表体现
  • 电脑开机无法启动怎么解决
  • 汇算清缴时业务招待费税收金额为零是什么原因
  • checkingmedia什么意思戴尔笔记本
  • php框架的作用
  • 报销差旅费退回余款
  • phpstudy8
  • js循环有哪些
  • 劳务公司已开票,可款项未收到,税票多久有效
  • 编译安装php8
  • php redis使用
  • node.js的安装步骤
  • 净营业周期为负数
  • 定额发票验旧日期怎么算
  • 不合格机器设备怎么处理
  • 营改增后建筑企业如何正确开具发票
  • 发票有种类型
  • mongodb 根据条件查询数量
  • 生成100个[30-99]之内的随机数
  • 合伙企业税务处理办法
  • sql死锁的简单例子
  • 顺流交易和逆流交易会计分录
  • 安防工程注意事项有哪些
  • 用友软件接口
  • 发票一直没验旧会有什么影响
  • 风险纳税人去税务局去报税可以吗
  • 年底盈利但有往年亏损怎么处理
  • 高新技术企业的税收优惠政策
  • etc 电子票
  • 收到股东投入材料怎么做账
  • 固定资产一次性扣除政策
  • 行政事业单位支出范围和标准
  • 三证合一后还有纳税人资格证吗
  • window10安装mysql5.7
  • xpwy cd server已停止工作
  • inodecmn.exe
  • rtmanager.exe - rtmanager是什么进程 有什么用
  • silent.exe - silent是什么进程 有什么用
  • win7资源管理器怎么打开
  • 雨林木风 winxp sp3 安装版 ys8.0
  • ssh远程登录设置
  • window10自动开机怎么回事
  • 苹果win10更新48%不动了
  • bootstrap入门
  • 杀掉进程windows
  • linearlayout addview
  • nodejs lua
  • android基础入门教程
  • jquery点击复制
  • 发票一年可以开多少
  • 摩托车车船税怎么收费标准
  • 小微企业 2018
  • 职业年金利息计入哪个科目里面
  • 土地 荒
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设