Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.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 GLES20.glBlendEquation不工作?_Android_Opengl Es 2.0_Pixel Shading - Fatal编程技术网

Android GLES20.glBlendEquation不工作?

Android GLES20.glBlendEquation不工作?,android,opengl-es-2.0,pixel-shading,Android,Opengl Es 2.0,Pixel Shading,几周来,我一直在尝试制作一个具有深度和法线贴图纹理的2.5D引擎,这和这里使用的没有什么不同。在考虑到由于ES 2.0缺少gl_fragDepth变量而无法从纹理在片段着色器中绘制深度贴图后,我找到了一个iOS教程,其中他们使用glBlendEquation和模式gl_MIN/gl_MAX将片段的深度缓冲“假”到帧缓冲区纹理。不幸的是,GLES20.glBlendEquation使我的两部手机(SGS 1/2)上的应用程序都因不支持操作异常而崩溃。所以我想知道是否有人使用这个功能取得了成功?GL

几周来,我一直在尝试制作一个具有深度和法线贴图纹理的2.5D引擎,这和这里使用的没有什么不同。在考虑到由于ES 2.0缺少gl_fragDepth变量而无法从纹理在片段着色器中绘制深度贴图后,我找到了一个iOS教程,其中他们使用glBlendEquation和模式gl_MIN/gl_MAX将片段的深度缓冲“假”到帧缓冲区纹理。不幸的是,GLES20.glBlendEquation使我的两部手机(SGS 1/2)上的应用程序都因不支持操作异常而崩溃。所以我想知道是否有人使用这个功能取得了成功?GL_MIN/GL_MAX在Android Opengl ES 2.0规范中似乎也缺失了,所以我可能在这里运气不好。。。 有什么想法吗


顺便说一句,它在GL11Ext中似乎确实有效,但由于我使用片段着色器进行法线贴图,因此我无法使用它。

我在我的Vega平板电脑(Tegra)上进行实验,这对我有效:

片段着色器:

#extension GL_NV_shader_framebuffer_fetch : require 
// makes gl_LastFragColor accessible

precision highp float;

varying vec2 v_texcoord;

uniform sampler2D n_sampler;

void main()
{
    vec4 v_tex = texture2D(n_sampler, v_texcoord);
    gl_FragColor = min(gl_LastFragColor, v_tex); // MIN blending
}

很简单吧?但我担心这只会是NV。

你找到解决方案了吗?@jave没有,我没有进一步研究过,也没有在任何论坛上得到任何反馈。所以我的假设是,它没有在android OpenGL ES 2.0中实现。也许新版本的操作系统已经解决了这个问题?我用android OS v2.3测试了这个问题。好的,几天前我自己也遇到了这个问题,但也没有找到解决方案。(顺便说一下,使用安卓2.2)。如果你真的解决了这个问题,我想看看你是怎么解决的。嗨,我正在研究这个问题,在Android 2.2上,我没有成功地使glBlendEquation()工作,即使是简单的加法混合。我会说这是它的许多缺陷之一。我会在2.3设备上试用,一些与OpenGL相关的问题在那里得到了修复。此外,在Tegra(以及其他带有GL_NV_shader_framebuffer_fetch的设备)上,blender是片段着色器的一部分(因此混合方程可以用GLSL编写,并且很容易实现min())。我还注意到,每当调用glBlendEquation时,应用程序都会崩溃。使用安卓2.3。