Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在现代OpenGL中结合纹理和深度?_Android_Opengl Es - Fatal编程技术网

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,然后不清除它。好的,这很有用,但是,我在着色器中找到了使用条件而不是渲染两个不同场景的解决方案。