作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道是否可以有多个图层可以独立操作并以重叠方式显示。
这是我想做的。我正在实现 Turtle Graphics API。我想为海龟运动制作动画。我想知道我是否可以将所有图形都放在一层中,而乌龟(我用一个小的等腰三角形表示)单独放在另一层中,这样我就可以通过清除该层来删除乌龟而不影响图形层和在海龟平面上的另一个位置/方向重新绘制海龟。
最佳答案
OpenGL 不是场景图。
OpenGL(通常)不是经典的 2D 帧缓冲区,您可以在其中尽量减少重绘。使用 OpenGL,您通常会在清除深度和颜色缓冲区后每帧重新绘制整个场景。
您有多种选择:
1) 禁用深度缓冲/深度检查并从后到前渲染图层。
2) 确保每个层都有一个合适的 Z 坐标并以任何顺序渲染它们,让 Z 缓冲区负责获得正确的分层。如果您的图层是半透明的,则将不起作用。
3) 通过您喜欢的任何方法将您的乌龟路径渲染到纹理(glCopyPixels()
、PBO、FBO、cairo)。渲染一个屏幕大小的纹理四边形和你的乌龟在上面。
4) 每帧完整重绘你的海龟路径,最旧的点在前。除非您的行数达到数十万,否则不应该很慢。确保使用顶点数组或 VBO。
关于opengl - 如何在opengl中使用不同的独立重叠层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7245207/
我是一名优秀的程序员,十分优秀!