在OpenGL中缓冲存储所有形状?

时间:2011-08-11 16:48:13

标签: cocoa opengl buffer

在OpenGL中,我有一个静态相机和一个只需要在用户“移动相机”时移动的场景。 我在OpenGL中有一个非常复杂的场景,我在每一帧都完全重新生成。 很抱歉,如果这是一个基本问题,但我不能将场景存储在某种缓冲区中,然后我可以告诉OpenGL绘制?

3 个答案:

答案 0 :(得分:3)

OpenGL不存储场景。这是一个绘图API,即您所做的是发送绘图命令。显示列表只是批量处理(大量)绘图命令的便捷方式。因此,您也不会通过重绘来“重新创建”场景,但是每次发出OpenGL绘图命令时,您实际上都会绘制这些内容。这一点很重要!这意味着,改变某些东西是一个场景并不是OpenGL的代价,因为你无论如何重绘所有的东西。因此,围绕(错误的)假设OpenGL为您进行一些场景管理来设计程序没什么好处。

答案 1 :(得分:2)

是。在“传统”OpenGL中,您使用display list。在更“现代”的OpenGL中,您可以使用vertex buffer object

答案 2 :(得分:1)

查看FBOs以获得快速解决方案。

或者,不要每帧都清除颜色缓冲区。