在OpenGL中,我有一个静态相机和一个只需要在用户“移动相机”时移动的场景。 我在OpenGL中有一个非常复杂的场景,我在每一帧都完全重新生成。 很抱歉,如果这是一个基本问题,但我不能将场景存储在某种缓冲区中,然后我可以告诉OpenGL绘制?
答案 0 :(得分:3)
OpenGL不存储场景。这是一个绘图API,即您所做的是发送绘图命令。显示列表只是批量处理(大量)绘图命令的便捷方式。因此,您也不会通过重绘来“重新创建”场景,但是每次发出OpenGL绘图命令时,您实际上都会绘制这些内容。这一点很重要!这意味着,改变某些东西是一个场景并不是OpenGL的代价,因为你无论如何重绘所有的东西。因此,围绕(错误的)假设OpenGL为您进行一些场景管理来设计程序没什么好处。
答案 1 :(得分:2)
是。在“传统”OpenGL中,您使用display list。在更“现代”的OpenGL中,您可以使用vertex buffer object。
答案 2 :(得分:1)
查看FBOs以获得快速解决方案。
或者,不要每帧都清除颜色缓冲区。