Android 如何在现代OpenGL中结合纹理和深度?
我正在处理渲染堆栈,必须使用深度渲染缓冲区将场景渲染为两个纹理。现在,为了生成最终的场景,我想将这两个渲染合并为带有普通着色器的平面纹理。然而,我正在努力弄清楚如何使用深度渲染缓冲区来结合两种纹理,注意对象的距离Android 如何在现代OpenGL中结合纹理和深度?,android,opengl-es,Android,Opengl Es,我正在处理渲染堆栈,必须使用深度渲染缓冲区将场景渲染为两个纹理。现在,为了生成最终的场景,我想将这两个渲染合并为带有普通着色器的平面纹理。然而,我正在努力弄清楚如何使用深度渲染缓冲区来结合两种纹理,注意对象的距离 搜索我发现的解决方案,这是一个过时的解决方案,但给出了一些见解。有人知道如何在现代OpenGL ES 2.0中实现这一点吗?假设它是一个对深度敏感的不透明几何体覆盖,并且您只有两个3D平面,那么您所能做的就是从两个深度纹理加载样本,比较它们以选择您想要的,然后从“赢家”加载颜色值并将其
搜索我发现的解决方案,这是一个过时的解决方案,但给出了一些见解。有人知道如何在现代OpenGL ES 2.0中实现这一点吗?假设它是一个对深度敏感的不透明几何体覆盖,并且您只有两个3D平面,那么您所能做的就是从两个深度纹理加载样本,比较它们以选择您想要的,然后从“赢家”加载颜色值并将其写入输出像素
。。。但这听起来相当昂贵,并没有真正获得3D GPU的价值(GPU支持深度/模板测试的全部目的是避免这种混乱),因此,如果有任何改变管道的余地,不必合并两个过程会更好…假设这是一个不透明几何体的深度敏感覆盖层,并且你只有两个3D平面,那么你所能做的就是从两个深度纹理加载样本,比较它们以选择你想要的一个,然后从“winner”加载颜色值并将其写入输出像素
。。。但这听起来相当昂贵,而且没有真正获得3D GPU的价值(GPU支持深度/模板测试的全部目的是避免这种混乱),因此如果有任何改变管道的余地,不必合并两个过程会更好…是的,我的想法是使用我已经拥有的深度信息进行深度/模具测试,但我不知道怎么做。当写入主窗口表面时,你不能-OpenGL ES不允许你通过着色器以编程方式修改深度。对于屏幕外渲染,只需将要用作深度附件的深度纹理附加到FBO,然后不清除它。好的,这很有用,但是,我找到了一个解决方案,使用着色器中的条件,而不是渲染两个不同的场景。是的,我的想法是使用我已经拥有的深度信息进行深度/模具测试,但我不知道怎么做。当写入主窗口表面时,你不能-OpenGL ES不允许你通过着色器以编程方式修改深度。对于屏幕外渲染,只需将要用作深度附件的深度纹理附加到FBO,然后不清除它。好的,这很有用,但是,我在着色器中找到了使用条件而不是渲染两个不同场景的解决方案。