我想知道是否可以有多个可以独立操作并以重叠方式显示的图层。
这是我想要做的。我正在实现一个Turtle Graphics API。我想动画乌龟运动。我想知道我是否可以将一层中的所有图形和乌龟(我使用小等腰三角形代表)单独放在另一层中,这样我就可以通过清除此图层而不影响图形层来清除乌龟。在乌龟飞机上的另一个位置/方向重绘乌龟。
答案 0 :(得分:2)
OpenGL不是场景图。
OpenGL(通常)不是经典的2D帧缓冲区,您希望尝试最小化重绘。使用OpenGL,您通常会在清除深度和颜色缓冲区后每帧重绘整个场景。
您有几种选择:
1)禁用深度缓冲/深度检查并将图层渲染回前方。
2)确保每个图层都有一个合适的Z坐标,并以任何顺序渲染它们,让Z缓冲区负责正确分层。如果您的图层是半透明的,则无效。
3)通过您支持的任何方法(glCopyPixels()
,PBO,FBO,cairo)将您的乌龟路径渲染为纹理。渲染一个屏幕大小的纹理四边形和你的乌龟。
4)每帧完整地重绘你的乌龟路径,最先点。除非你有数十万行数,否则不应该很慢。确保使用顶点数组或VBO。