1

我想在 Open GL ES 中实现 Goldfeather 的 CSG(构造实体几何建模)算法。

我需要第二个深度缓冲区和缓冲区之间的传输(合并)操作。我在“桌面”Open GL 中使用 glCopyPixels:

从第一个缓冲区转移到第二个缓冲区

glViewport(0,0, _viewport.w, _viewport.h);
glRasterPos2f(_viewport.w>>1,0.0F);
glDisable(GL_STENCIL_TEST);
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glDepthFunc(GL_ALWAYS);
glCopyPixels(0,0,_viewport.w>>1,_viewport.h,GL_DEPTH);

从第 2 个缓冲区转移到第 1 个缓冲区

glViewport(0,0, _viewport.w, _viewport.h);   
glRasterPos2f(0.0f,0.0f);
glCopyPixels(_viewport.w>>1,0,_viewport.w>>1,_viewport.h,GL_DEPTH);

OpenGL ES 中 glCopyPixels 的替代品是什么?

4

1 回答 1

0

我不认为你可以在 OpenGL ES 中有第二个深度缓冲区——gl.h 只包含 GL_DEPTH_ATTACHMENT,不像 GL_COLOR_ATTACHMENT0 和 GL_COLOR_ATTACHMENT1。我不熟悉 Goldfeather 的算法,但我认为您可以通过将纹理绑定到帧缓冲区的深度和颜色渲染缓冲区连接点来伪造具有两个深度缓冲区,在颜色缓冲区的另一个深度附件中绘制您想要的内容,然后最后将这些纹理传递到着色器中,该着色器将您想要的结果绘制到屏幕上,模拟 glCopyPixels 调用。

于 2013-10-21T19:29:27.097 回答