Mali离线编译着色器在OpenGLES2.0应用程序中使用

时间:2016-04-15 07:45:07

标签: opengl-es shader gpu mali

我使用的是Mali-400 GPU。 我想使用Mali离线着色器编译器来编译Vertex着色器和片段着色器。

我使用ARM Mali离线编译器编译了我的Vertex着色器和片段着色器,步骤为

  

malisc.exe --vertex -c Mali-400 -r r1p1 -d Mali-400_r5p0-01rel0 Vertex_shader.glsl -o vshader.out   malisc.exe --fragment -c Mali-400 -r r1p1 -d Mali-400_r5p0-01rel0 Fragm_shader.glsl -o fragment.out

我在下面使用代码, 我的应用程序编译成功,但应用程序没有在我的目标上运行。 将着色器二进制文件内容复制到静态数组中,并将其与glShaderBinary一起使用。

我的代码段:

char VertexShaderArray[] = {<initialized using shader binary data>};
char fragShaderArray[] = {<initialized using shader binary data>};

GLuint v, f, program;
v = glCreateShader(GL_VERTEX_SHADER);
f = glCreateShader(GL_FRAGMENT_SHADER);

glShaderBinary(1, &v, MALI_PROGRAM_BINARY_ARM, (void*)&VertexShaderArray, sizeof(char)*sizeof(VertexShaderArray));
glShaderBinary(1, &f, MALI_PROGRAM_BINARY_ARM, (void*)&fragShaderArray, sizeof(char)*sizeof(fragShaderArray));

program = glCreateProgram();
glAttachShader(program, v);
glAttachShader(program, f);

glLinkProgram(program);
glUseProgram(program);

运行此应用程序时,我在目标上收到一条消息:

info:L0101所有附加的着色器必须在链接之前进行编译

有人可以发布示例代码,以便在OpenGLES2.0应用程序中使用离线编译着色器。

0 个答案:

没有答案