【发布时间】:2013-10-06 18:23:25
【问题描述】:
我遇到了另一个 OpenGL ES 驱动程序错误。这次我尝试编译以下几行:
precision mediump float;
varying highp vec2 textureCoordinate;
void main() {
highp vec4 color = texture2D(input0, textureCoordinate);
vec3 color3 = color.rgb;
vec2 tc = (2.0 * textureCoordinate) - 1.0;
float d = dot(tc, tc);
vec2 lookup = vec2(d, color3.r);
..
..
}
但我在后面:
GLES20.glLinkProgram(program);
本机崩溃:“致命信号 11(SIGDEV) 位于 0x00000060(代码 = 1),线程 1231” 我猜这是因为 LG nexus 4 使用 GPU Adreno,而且它在不同的崩溃中也崩溃了,错误代码为 14 - 使用了太多的宏。
【问题讨论】:
-
如果我们正在寻找您的着色器代码中的错误,您应该包含完整着色器代码。这缺少所有变量声明,我假设您最后遗漏了一些东西。一些应用程序代码也可能会有所帮助。
-
可能您的着色器代码未编译,因此您的程序无法链接。顺便说一句,OpenGL ES 没有着色器,所以在这里添加 OpenGL ES 标记是无关紧要的。
-
请提供完整的着色器代码。
-
您的顶点着色器中有运算符
for吗? -
不,我没有任何东西,我所做的是调查 Adreno 功能。结果是它在将 GLSL 代码编译成 GPU 指令代码时出现了一些严重的错误。不幸的是,我们刚刚对使用 Adreno GPU 的设备禁用了一些过滤器。
标签: android opengl-es opengl-es-2.0 shader fragment-shader