我在写一个计算着色器,它应该在PC和Android上运行。它在PC上运行良好,但不能在Android上编译。OpenGL着色器无法在设备上编译
这是着色器:
#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 [email protected] ([email protected])
这是在索尼Xperia Z5上(Android仿真器似乎不支持OpenGL ES 3.1)。
https://www.opengl.org/sdk/docs/man/html/imageStore.xhtml查看opengl版本是否支持'imageStore'功能。 – ASK
@ASK支持ES 3.1:https://www.khronos.org/opengles/sdk/docs/man31/html/imageStore.xhtml(我的着色器是ES 3.1) – sydd