我想在Open GL ES中为CSG(构造实体几何建模)实现Goldfeather的算法。
我需要在缓冲区之间进行第二次深度缓冲和传输(合并)操作。我在“桌面”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);
从第二个缓冲区转移到第一个缓冲区
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的替换是什么?
答案 0 :(得分:0)
我认为你不能在OpenGL ES中有第二个深度缓冲区 - gl.h只包含GL_DEPTH_ATTACHMENT,而不像GL_COLOR_ATTACHMENT0和GL_COLOR_ATTACHMENT1。我不熟悉Goldfeather的算法,但我认为你可以通过将纹理绑定到帧缓冲区的深度和颜色渲染缓冲附着点来伪造两个深度缓冲区,在另一个深度附件中绘制你想要的颜色缓冲区,然后最终将这些纹理传递到着色器,该着色器将您想要的结果绘制到屏幕上,模拟glCopyPixels调用。