C++ 从深度附件读取的良好替代方法(OpenGL ES 2.0)

C++ 从深度附件读取的良好替代方法(OpenGL ES 2.0),c++,graphics,opengl-es,C++,Graphics,Opengl Es,我有一个运行OpenGLES2.0的引擎。我创建了一个帧缓冲区对象,它有两个颜色附件和一个深度附件。当我对此缓冲区执行渲染时,当后续写入颜色附件时,深度附件用于深度测试。我想使用深度附件中的信息,并将其存储在颜色附件中。有没有一种方法可以将数据直接存储在着色器中的第二个颜色附件中,或者至少有一种便宜的方法可以在该信息可用时将数据从深度附件复制到本机代码上的另一个颜色附件中?没有自动执行此操作的方法。后续渲染过程只需通过着色器中的normal texture()调用加载深度信息。您是否考虑过将gl

我有一个运行OpenGLES2.0的引擎。我创建了一个帧缓冲区对象,它有两个颜色附件和一个深度附件。当我对此缓冲区执行渲染时,当后续写入颜色附件时,深度附件用于深度测试。我想使用深度附件中的信息,并将其存储在颜色附件中。有没有一种方法可以将数据直接存储在着色器中的第二个颜色附件中,或者至少有一种便宜的方法可以在该信息可用时将数据从深度附件复制到本机代码上的另一个颜色附件中?

没有自动执行此操作的方法。后续渲染过程只需通过着色器中的normal texture()调用加载深度信息。

您是否考虑过将
gl_FragCoord.z
写入其他颜色附件
gl_FragData[1]=gl_FragCoord.z
?当然,除非您的颜色附件是
GL_R32
(我认为es2.0不支持),否则您可能必须将其打包到4个通道中,以在OpenGL ES中存储深度。