如何在opengl中使用不同的独立重叠图层?

问题描述:

我想知道是否有可能有多个图层可以独立操作并以重叠方式显示。如何在opengl中使用不同的独立重叠图层?

这是我想要做的。我正在实施一个Turtle Graphics API。我想让乌龟运动变得有生气。我想知道是否可以在一层中使用所有图形,并在另一层中单独使用乌龟(我用一个小的等腰三角形表示),这样我就可以通过清除此图层并在不影响图形层的情况下擦除乌龟,并且在乌龟平面上的另一个位置/方向重新绘制乌龟。

OpenGL不是场景图。

OpenGL(通常)不是一个经典的2D帧缓冲,你想尽量减少重绘。使用OpenGL,通常在清除深度和颜色缓冲区后,每帧都会重新绘制整个场景。

您有几种选择:

1)禁用深度缓存/深度检查,使您的图层后到前。

2)确保每个图层都有一个合适的Z坐标并以任意顺序渲染它们,让Z缓冲区负责正确分层。如果图层是半透明的,将无法使用。

3)通过任何你认为支持的方法将你的乌龟路径渲染成纹理(glCopyPixels(),PBO,FBO,cairo)。渲染一个屏幕大小的纹理四边形和你的乌龟在上面。

4)重新绘制你的乌龟路径完整的每帧,最老的点先。除非你有成千上万的线数,否则不应该很慢。确保使用顶点数组或VBO。