【发布时间】:2012-01-16 19:25:02
【问题描述】:
几周以来,我一直在尝试制作具有深度和法线贴图纹理的 2.5D 引擎,这与此处使用的 Linky 不同。在认为由于 ES 2.0 缺少 gl_fragDepth 变量而无法从纹理中绘制片段着色器中的深度图后,我找到了一个 iOS 教程,其中他们使用模式 GL_MIN/GL_MAX 的 glBlendEquation 来“伪造”片段的深度缓冲到帧缓冲区纹理Linky。不幸的是,GLES20.glBlendEquation 使应用程序在我的两部手机(SGS 1/2)上崩溃,并出现 UnsupportedOperationException。所以我想知道是否有人使用此功能取得任何成功? Android Opengl ES 2.0 规范中似乎也缺少 GL_MIN/GL_MAX,所以我可能在这里不走运...... 有什么想法吗?
顺便说一句,它似乎在 GL11Ext 中工作,但由于我使用片段着色器进行法线贴图,这对我不起作用。
【问题讨论】:
-
您找到解决方案了吗?
-
@jave 不,我没有进一步研究这个问题,也没有在任何论坛上收到任何反馈。所以我的假设是它没有在 android OpenGL ES 2.0 中实现。也许这已在较新版本的操作系统中得到修复?我使用 android OS v2.3 对此进行了测试。
-
好的,我前几天自己也遇到过这个问题,但也没有找到解决办法。 (顺便说一下,使用 Android 2.2)。如果你确实解决了问题,我想看看你是怎么做到的。
-
嗨,我正在研究这个问题,在 Android 2.2 上,我没有成功让 glBlendEquation() 工作,即使是简单的添加剂混合。我会说这是它的许多缺陷之一。我会在 2.3 设备上尝试,那里修复了一些与 OpenGL 相关的问题。此外,在 Tegra(以及其他具有 GL_NV_shader_framebuffer_fetch 的设备)上,混合器是片段着色器的一部分(因此混合方程可以用 GLSL 编写,并且很容易实现 min())。
-
我还注意到,每当我调用 glBlendEquation 时,应用程序就会崩溃。使用 Android 2.3。
标签: android opengl-es-2.0 pixel-shading