位置: 编程技术 - 正文

OpenGL学习06_顶点数组VertexArray(opengl点的绘制)

编辑:rootadmin

推荐整理分享OpenGL学习06_顶点数组VertexArray(opengl点的绘制),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:opengl 顶点索引,opengl 顶点索引,opengl 顶点索引,opengl顶点数组,opengl 顶点,opengl 顶点索引,opengl顶点数组,opengl顶点法向量,内容如对您有帮助,希望把文章链接给更多的朋友!

什么是顶点数组?

OpenGL提供了一些顶点数组函数,允许只用少数几个数组指定大量的与顶点相关的数据,并用少量函数调用(与顶点数组的数量相仿)访问这些数据。使用顶点数组函数,一个拥有条边的多边形的个顶点可以放在1个数组中,并且只通过1个函数进行调用。如果每个顶点还有一条法线向量,所有条法线向量可以放在另一个数组中,也可以只通过1个函数进行调用。把数据放在顶点数组中可以提高应用程序的性能。使用顶点数组可以减少函数调用的次数,从而提高性能。另外,使用顶点数组还可以避免共享顶点的冗余处理。

使用顶点数组对几何图形进行渲染需要3个步骤:

1) 激活(启用)最多可达8个数组,每个数组用于存储不同类型的数据:顶点坐标、表面法线、RGBA颜色、辅助颜色、颜色索引、雾坐标、纹理坐标以及多边形的边界标志。

指定了需要启用的数组。array参数可以使用下面这些符号常量:GL_VERTEX_ARRAY、GL_COLOR_ARRAY、GL_SECONDARY_COLOR_ARRAY、GL_INDEX_ARRAY、GL_NORMAL_ARRAY、GL_FOG_COORDINATE_ARRAY、GL_TEXTURE_COORD_ ARRAY和GL_EDGE_FLAG_ARRAY。开启和关闭顶点数组的用法如下:

2) 把数据放入数组中。这些数组是通过它们的内存位置的地址(即指针)进行访问的。在客户端-服务器模型中,这些数组存储在客户机的地址空间中,除非选择使用缓冲区对象,这时候,数组存储在服务器内存中。

可以通过一种简单的方法,用一条命令指定客户空间中的一个数组。共有8个不同的函数可以用来指定数组,每个函数用于指定一个不同类型的数组。另外,还有一个函数可以一次指定客户空间中的几个数组,它们均来源于一个混合数组。

指定了需要访问的空间坐标数据。pointer是数组包含的第一个顶点的第一个坐标的内存地址。type指定了数组中每个坐标的数据类型(GL_SHORT、GL_INT、GL_FLOAT或GL_DOUBLE)。size是每个顶点的坐标数量,它必须是2、3或4。stride是连续顶点之间的字节偏移量。如果stride是0,数组中的顶点便是紧密相邻的。为了访问其他几个数组,可以使用下面这些类&#;的函数:

3) 用这些数据绘制几何图形。OpenGL通过指针从所有的被激活数组中获取数据。在客户端-服务器模型中,数据被传输到服务器的地址空间中。有3种方式可以完成这个任务:• 访问单独的数组元素(随机存取)。• 创建一个单独数组元素的列表(系统存取)。• 线性地处理数组元素。

OpenGL学习06_顶点数组VertexArray(opengl点的绘制)

在顶点数组的内容被解引用(即提取指针所指向的数据)之前,数组一直保存在客户端,它们的内容很容易进行修改。在步骤3中,数组中的数据被提取,接着发送到服务器,然后发送到图形处理管线进行渲染。可以从单个数组元素(索引位置)提取数据,也可以从一个有序的数组元素列表(可能被限制为整个顶点数组数据的一个子集)中提取数据,或者从一个数组元素序列中提取数据。

解引用单个数组元素

获取当前所有已启用数组的一个顶点(第ith个)的数据。对于顶点坐标数组,对应的函数是glVertex[size][type]v(),其中size是[2, 3, 4]之一。type是[s, i, f, d]之一,分别表示GLshort、GLint、GLfloat和GLdouble。size和type都是由glVertexPointer()函数定义的。对于其他启用的数组,glArrayElement()分别调用glEdgeFlagv()、glTexCoord[size][type]v()、glColor[size][type]v()、glSecondaryColor3[type]v()、glInde[type]v()、glNormal3[type]v()和glFogCoord[type]v()。如果启用了顶点坐标数组,在其他几个数组(如果启用)相对应的函数(与数组&#;相对应,最多可达7个)被执行之后,glVertex*v()函数在最后执行。glArrayElement()通常是在glBegin()和glEnd()之间调用。否则,glArrayElement()函数就会设置所有启用的数组的当前状态(顶点除外,因为它不存在当前状态)

解引用数组元素的一个列表

mode(图元的类型)、count(元素的数量)、type(数据类型)和indices(顶点数据的数组位置)。glDrawRangeElements()引入了两个新参数:start和end,它们指定了indices可以接受的&#;的范围。indices数组中的&#;必须位于start和end之间才是合法的(包含start和end)。

调用glDrawArrays()函数的效果差不多相当于下面这段代码:和glDrawElements()相&#;,glDrawArrays()也会对它的参数&#;执行错误检查,如果对应的数组被启用,它会导致当前的RGB颜色、辅助颜色、颜色索引、法线坐标、雾坐标、纹理坐标和边界标志处于不确定状态。

解引用一个数组元素序列

glArrayElements()、glDrawElements()和glDrawRangeElements()能够对数据数组进行随机存取,但是glDrawArrays()只能按顺序访问它们。

创建一个几何图元序列,使用每个被启用的数组中从first开始,到first &#; count-1结束的数组元素。mode指定了创建的图元类型,它的&#;和glBegin()函数所接受的参数&#;相同。例如:GL_POLYGON、GL_LINE_LOOP、GL_LINES和GL_POINTS等。调用glDrawArrays()函数的效果差不多相当于下面这段代码:

和glDrawElements()相&#;,glDrawArrays()也会对它的参数&#;执行错误检查,如果对应的数组被启用,它会导致当前的RGB颜色、辅助颜色、颜色索引、法线坐标、雾坐标、纹理坐标和边界标志处于不确定状态。

一个小例子

本文由CC原创总结,如需转载请注明出处:

位Win7环境下vs配置opengl 大体上都和VSOpenGL配置与实例开发内容相同将glut.dll和glut.dll复制到C:WINDOWSSysWOW文件夹下。OpenGL作为当前主流的图形API之一,它在一些场合具有比D

OpenGL 房子 元旦上的图形学的外教Opengl编程前几个实验挺简单的实现一些基本的点线面多年变形的绘制颜色的变化位置的改变等最后一个实验绝对的坑到现在也没

glViewport glViewport是OpenGL中的一个函数。计算机图形学中,在屏幕上打开窗口的任务是由窗口系统,而不是OpenGL负责的。1功能编辑glViewport在默认情况下,视口被

标签: opengl点的绘制

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

上一篇:OpenGL学习05_点画模式(点画多边形)(opengl中点画线算法)

下一篇:64位Win7环境下vs2013配置opengl

  • 进项税认证后转出
  • 所得税费用的计提
  • 其他权益工具账务处理内容
  • 未抵扣的进项发票是什么意思
  • 受托代销商品款是什么科目
  • 企业收到的捐赠应计入
  • 销售大型设备的税率
  • 企业季度预缴所得税怎么账务处理
  • 企业进口关税和消费关税
  • 应收银行存款利息怎么算
  • 上交的项目评审费如何做财务处理呢?
  • 实收资本变更股东要交税吗
  • 企业所得税营业收入包括什么
  • 代发工资的手续费是多少
  • 商品混凝土的增值税费率
  • 小规模纳税人金额
  • 代扣代缴个人所得税手续费是否缴纳增值税
  • 高新技术企业所得税税率
  • 以前年度费用本年开发票
  • 在建工程完工后如何转为固定资产
  • 营改增后小规模纳税人转一般纳人
  • 公司买回来做样衣的服装怎么做会计分录?
  • 以旧机器抵货款合法吗
  • 红字专用发票信息表编号在哪儿
  • 小型微利企业的企业所得税优惠政策
  • 以产品分成方式销售商品
  • 出口视同内销如何申报?
  • 上月暂估入账
  • 施工图审查费入哪个科目
  • 怎么通过mac地址访问设备
  • 重装系统后怎么恢复原来的系统
  • php中的header函数
  • 金融企业风险资产处理相关税收政策
  • 个人所得税必须交吗
  • 生产企业免抵退税实例
  • 应收账款在贷方如何平账
  • php 常用算法
  • idea搭建web开发环境
  • 软件的摊销期限
  • sysctl命令配置主机名
  • 直线折旧法账务处理例题
  • 小规模纳税人可以开增值税专用发票吗
  • 代扣代缴的境外收入企业所得税可以抵减吗
  • 增值税免税收入账务处理
  • 宝塔面板在哪
  • 织梦自适应代码怎么做
  • 织梦cms要钱吗
  • linux下安装mysql数据库5.6源码安装,修改登录用户密码
  • 购买债券的利息会计分录
  • 工资薪金所得适用的税率是
  • 实收资本属于限定性净资产吗
  • 营业利润是负数什么原因
  • 小规模纳税人减按1%如何填报申报表
  • 子公司自购买日开始持续计算的可辨认净资产的公允价值
  • 京东预付是什么意思
  • 对于相关人员培训存在的问题
  • 税控服务费全额抵扣怎么申报
  • 房地产企业预缴土地增值税
  • 企业代办业务有哪些
  • 货物运费是否计入成本
  • 支付投资者投入的款项
  • 以销定产会计怎么做账科目
  • 挂靠企业电费如何处理?
  • 积分中的换元怎么使用
  • 如何设置生产成本总账表格
  • mysql(master/slave)主从复制原理及配置图文详解
  • 安装windowsserver2008r2提示无法定位程序输入点
  • xp无法正常启动怎么办
  • linux操作系统添加用户
  • xp局域网文件共享设置
  • Win10打开淘宝https被划上红色斜杠的快速解决办法
  • 自动备份文件并发送到Gmail (适用G级数据的备份)
  • win7安全模式
  • 带上Windows 8去旅行 让你的旅途更轻松
  • linux系统中怎么编写一个程序
  • shell脚本 -ne 0
  • js中的date函数
  • [置顶]从lv2开始开挂的原勇者候悠闲的异世界生活
  • 全国砂石供应紧缺
  • 税务打虚打骗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设