相关疑难解决方法(0)

在OpenGL ES 2.0中编写深度缓冲区/深度值的解决方法

我需要在Android设备(OpenGL ES 2.0)上写入深度缓冲区.由于gl_FragDepth在OGL ES 2.0下不可写,我必须找到一种解决方法.我实际上想通过光线投射渲染球体,类似于:http://www.sunsetlakesoftware.com/2011/05/08/enhancing-molecules-using-opengl-es-20.但是,本网站上解释的解决方案(屏幕外渲染通过使用特殊功能编写深度glBlendEquation)仅适用于Apple设备,而不适用于Android,因为GL_MIN_EXT不支持混合.

在我的Tegra3平板电脑上,我能够实现这种方法:Android GLES20.glBlendEquation无效?(顺便说一句,我建议使用线性化的深度值,它们会产生更好的结果!)它的效果非常好,但当然这只适用于Nvidia GPU.

从理论上讲,有扩展GL_EXT_frag_depth(参见OpenGL ES片段着色器可以改变片段的深度值吗?),但它在Android设备上也不可用.

最后,你当然可以只为一个球体编写深度缓冲区(在屏幕外渲染过程中),然后在第二个渲染过程中为下一个球体写入深度缓冲区,并在第三个渲染过程中将两者结合起来.这样做,你将有n*个球体的2*n + 1个渲染过程 - 这似乎是非常低效的!

因此,由于我的想法不多,我的问题是:你能想到在OpenGL ES 2.0 Android设备上编写深度缓冲区的另一种通用方式/解决方法吗?

android opengl-es-2.0

7
推荐指数
1
解决办法
2166
查看次数

将纹理数据写入深度缓冲区

我正在尝试实现下面描述的技术:用深度合成图像.

我们的想法是使用现有纹理(从图像加载)作为深度蒙版,基本上伪造3D.

我面临的问题是在openglES中没有glDrawPixels.有没有办法在iPhone上完成同样的事情?

opengl-es gldrawpixels depth-buffer ios

6
推荐指数
1
解决办法
4901
查看次数