高级图形编程(基于opengl)7

1.5.1 顶点缓存对象

提高几何体和纹理数据到渲染管线性能还是有待发展的区域。在现代图形硬件中提高几何数据和纹理数据进入图形渲染器的性能一直是长期的难题之一。通常提高图形加速器与主系统之间的高速总线传输速度。每次传一个顶点数组,然后从顶点数据是从应用程序内存到处理管道。显示列表的优势是不透明的方式让数据移动到图形加速器近的地方,包括内存通过公共总线到图形渲染器。这就是用显示列表增加高性能处理方法。

不幸的是顶点数组是不能使用这个方式,因为顶点数据的创建和管理是在应用程序内存的地址空间(客户端内存),在OpenGL 1.5,顶点缓存对象被添加到服务器优化使用的显示列表。顶点缓冲区对象允许应用程序分配顶点数据到加速器的内存由OpenGL实现和分配。应用程序可以使顶点数据到缓存使用一个转换命令(glBufferData),或者映射缓存(glMapBuffer)。顶点缓存数据也允许应用程序动态修改数据,虽然现在可能使存储缓存在加速器变慢。在每一帧修改中动态读写访问几个数据,不需要应用程序维护一个单独的副本,拷贝它到图形加速器。顶点缓存区对象使用顶点数组绘制命令绑定一个顶点缓存对象到适当数组的点(顶点,颜色,法向,纹理坐标)使用数组点命令(比如 glNormalPointer).当数组绑定缓存对象,数组指针相当于存储的缓存对象,而不是应用程序的内存地址。

顶点缓存区对象为应用程序创建添加了额外的开销,但是他们需要最大渲染性能需要非常快的硬件加速器。第21章讨论额外的问题的技术问题,和从OpenGL实现最大的渲染性能。

1.5.2 三角形列表

本章的重点是强调三角形条带和扇形是最佳表示的基元。值得注意的是在有些OpenGL实现中使用其他的基础三角形执行模型表示方式,它们有自己的独特优势。使用glDrawElements命令传入独立三角形基元(GL_TRIANGLES,应用程序可以定义三角形列表可以共享顶点。共享顶点方式是重复使用顶点列表的序列号。三角形列表的优势是他们可以简单是使用和提升共享顶点数据;在索引列表中是重复索引号,而不是真实的三角形数据。

在以前,硬件加速器不处理三角形列表。他们经常转换顶点时每次都会在索引序列中遇到,即使它在前面已经处理过了。现代桌面电脑加速器可以高速转换顶点并当这个点引用在数组中的同一个点时是共享的。更多实现的细节描述请参考8.2章节。通常仍然使用三角带和扇形构成,然而,在加速器中提供更多的优化方案。

 

1.6 建模和渲染再次讨论

这一章我们开始重点讲OpenGL主要关心的渲染部分,不是建模。一个可以交互的应用程序,即是,使用一定范围发小的静态图片,去创建一个对象并动态的更改他的属性。这个应用程序的特征是基本点就是如果与他的几何数据交互和如何使用OpenGL渲染数据。当速度是主要的考虑时,开发者可能会极大的限度去用户渲染效果使用的数据。这样的优化可能包括使用显示列表和顶点数组,预处理每个顶点的光照颜色值等等。然而,一个建模软件,比如一个机械设计软件,可能使用更多模型数据简化的表示方式:双精度坐标值表示,完整的颜色和每个顶点法线。此外,应用程序可能不渲染不使用的模型,比如碰撞检测或有限基元的运算。

还有其他的可能性。很多应用程序使用多个部分组成:他们开始一个主要部分,然后根据其他目的划分几个部分,包括渲染,碰撞检测,和物理模型模拟。创建实现这些效果可能需要使用许多不同的技术。他们可能生成后缓存起来,根据需要重新使用,或者一段时间后进入后台运行。这些方法的选择取决于应用程序的需要。

这个问题的关键是没用一种方法在任何应用程序都管用的方法。我们必须彻底理解所有应用的需求,然后查找需求与渲染策略最匹配的方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值