位置: 编程技术 - 正文

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轨迹球代码(轨迹球怎么调出来)

  • 应交增值税和未交增值税都有余额
  • 贴现手续费计入投资收益
  • 有限责任公司需要几个股东
  • 如何自己开小公司
  • 固定资产折旧准予扣除是什么意思
  • 工会经费能零申报,可以计提工会经费吗
  • 在电子税务里怎么查以前年度亏损数据
  • 应纳税额减征额包括哪些内容
  • 适用会计制度备注怎么填?
  • 快递售后是干嘛的
  • 苗木发票抵扣公式
  • 海关缴款书税号
  • 如何理解定时是指收入在什么时候记入账册?
  • 国税和地税要怎么合并
  • 易税是什么
  • 文化事业建设费征收对象
  • 总资产周转率ttm
  • 新公司开业的祝福语
  • 固定资产用于免税项目 进项税处理
  • 商业承兑汇票是谁签发的
  • 农产品零税率
  • 小规模纳税人增值税超过30万怎么纳税
  • 企业停产后员工怎么办
  • 结转应交增值税会计科目
  • 费用销售收入占比怎么算
  • 开启浏览器模式
  • 常见转移支付事项有哪些情况
  • 事业单位服务收入怎么做账
  • 什么是货币资产负债表
  • 硬盘的转速有什么用
  • 纳税人解除劳动合同证明
  • 结转损益类收入科目的余额会计分录
  • 销售方怎么申请红字信息表
  • 汇总收款凭证怎么做账
  • 破产清算子公司
  • 前端毕业设计项目
  • 金融性资产有哪些
  • 利润表的营业收入是开票金额吗
  • 背书转让的步骤
  • 工资一定要对公发吗
  • erp面试题目100及最佳答案
  • 用jsp实现用户登录验证
  • windowsserver2012r2远程协助灰色
  • php如何实现重载
  • 申报完成后怎么处理
  • 一般纳税人购进小规模纳税人的货物
  • 其他应收款的会计分录有哪些
  • mysql查询一列数据
  • 技术服务型公司如何做账务处理
  • 工会经费与教育经费比例
  • mysql8编译安装
  • 出售无形资产净损益
  • 出纳现金日记账怎么记账
  • 个人所得税手续费返还政策文件
  • 股东借款转实收资本
  • 营改增后建筑企业税负不降反增
  • 什么是固定资产?其特征有哪些
  • SQL直接操作excel表(查询/导入/插入)
  • mssql 优化
  • centos7+
  • win8打开桌面
  • win打开本地策略
  • win8.1怎么关机快捷键
  • mac关机快捷键是什么键
  • linux ftpd
  • linux系统的内存分配和回收采用什么算法?
  • 一个简单的防偷技巧
  • Jquery针对tr td的一些实用操作方法(必看篇)
  • numpy使用心得
  • javascript对象的常用方法
  • Android的事件处理机制是一种______机制
  • android混淆后怎么破解
  • 在python中的用法
  • 企业所得税汇总纳税备案表
  • 税代扣代缴
  • 地税局是政府部门吗
  • 企业所得税率2023年
  • 专家费缴税标准
  • 营业执照每个季度申报吗
  • 买二手房土地证怎么过户
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设