OpenGL ES 中的第二个深度缓冲区



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

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

从第一个缓冲区传输到第二个缓冲区

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);

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

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中glCopyPixel的替代是什么?

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

最新更新