1

Mali-400 GPU を使用しています。Mali オフライン シェーダー コンパイラを使用して、Vertex シェーダーと Fragment シェーダーをコンパイルしたいと考えています。

以下の手順で、ARM Mali オフライン コンパイラを使用して Vertex シェーダと Fragment シェーダをコンパイルしました。

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 アプリケーションでオフラインでコンパイルされたシェーダーを使用するためのサンプル コードを投稿してください。

4

0 に答える 0