Gre*_*hen 25
我认为,虽然我可能错了,因为大多数高性能图形应用程序(主要是游戏)几乎只使用顶点缓冲区等(为了挤出卡中的每一滴性能),所以有压力不要担心"轻浮"的项目,如显示列表(甚至是古老的glVertex调用).恕我直言,这为学习编写OpenGL代码的人们提供了巨大的障碍,并且(出于我自己的目的)是制作一些快速,清晰,性能相当好的代码的一大障碍.
请注意,这些功能在3.0中已弃用,实际上已在3.1中删除(但仍通过ARB扩展提供兼容性).在OpenGL 3.2中,他们将这些功能转移到"兼容性"配置文件中,驱动程序编写者可以选择该配置文件.
那么这是什么意思?至少NVidia已经发誓要继续支持老派兼容模式以实现可预见的未来 - 他们需要支持大量遗留代码.您可以在以下幻灯片中找到对其支持的讨论:
http://www.slideshare.net/Mark_Kilgard/opengl-32-and-more
从#32幻灯片开始.我不知道ATI/AMD对此的立场,但我认为它会类似.
因此,虽然显示列表在技术上已从OpenGL 3.2标准的所需部分中删除,但我认为您可以安全地使用它们很长一段时间.最后,您可能希望学习OpenGL的缓冲区/着色器中心界面,特别是如果您的最终目标是信封推送游戏,但它确实不那么直观(没有glRotate,甚至!),所以我建议从良好的旧OpenGL 2.x开始.
-matt
显示列表已删除,因为在opengl 3+中,所有顶点,纹理和光照数据都存储在图形卡上,即所谓的保留模式渲染(保留了数据,允许您向该卡发送单个命令以绘制图形)。网格,而不是每帧将顶点数据发送到卡。计算机图形学的主要瓶颈是RAM和gpuRAM之间的数据带宽。通过一次生成网格并保留该数据,我们可以使用齐次变换矩阵对其进行变换,并轻松绘制它。这有效地减少了瓶颈,并且具有更长的加载时间的缺点。但是,即时模式(3.0之前的版本)使用大量图形带宽来发送每帧经预转换,具有重新计算的法线等的顶点数据。这种方法的问题有两个:1)带宽使用过多,和太多的GPU空闲时间。2)过度使用cpu时间进行计算,这可能会在gpu上的100多个内核上并行执行
一个简单的解决方案是保留模式。
使用保留模式时,不再需要显示列表。因此,将它们从核心配置文件中删除。
立即模式对于学习计算机图形学原理仍然非常有用。(启动时充满了乐趣)它只是在最大可能的性能方面受苦。
首先,VBO和VAO可能不那么直观,但是就速度而言,它要优越得多。
互联网上有一些易于理解的opengl 3.0教程。一旦关闭了openGL 2.0,就应该考虑升级到3.0+,因为它允许您构建非常快速的3d图形应用程序。
| 归档时间: |
|
| 查看次数: |
14439 次 |
| 最近记录: |