【发布时间】:2016-08-17 11:01:24
【问题描述】:
我正在编写一个可以在 PC 和 Android 上运行的计算着色器。它在 PC 上运行良好,但在 Android 上无法编译。
这是着色器:
#version 310 es
uniform vec2 lightPos; // passed from the app
layout (local_size_x = 512, local_size_y = 1) in;
layout (rgba8, binding = 0) uniform image2D img_output;
layout (rgba8, binding = 1) uniform readonly image2D colorTex;
layout (rgba8, binding = 2) uniform readonly image2D transpTex;
void main () {
imageStore(img_output, ivec2(3, 6), vec4(0.3 ,0.2 ,0.5 ,0.9));
}
错误是:Shader compile error: ERROR: '' : unsupported format on read/write image
如果我将最后一个参数更改为ivec4 或uvec4,我会得到:ERROR: 'imageStore' : no matching overloaded function found
GL.GetString(StringName.Version); 返回
GL version:OpenGL ES 3.1 V@141.0 (GIT@I0bc8e21cf2)
这是在 Sony Xperia Z5 上(Android 模拟器似乎不支持 OpenGL ES 3.1)。
【问题讨论】:
-
opengl.org/sdk/docs/man/html/imageStore.xhtml查看opengl版本是否支持
imageStore功能。 -
@ASK 受 ES 3.1 支持:khronos.org/opengles/sdk/docs/man31/html/imageStore.xhtml(我的着色器是 ES 3.1)
标签: android opengl-es compute-shader