OpenGLを使用して簡単なAndroidゲームを作成しようとしていて、最近までスムーズに進んでいました。私はs7とNexus 5エミュレータでアプリケーションをビルドして実行できましたが、s6で実行しようとすると失敗します。S6シェイダー作成時にAndroid OpenGLコンパイルが失敗する
シェイダーがコンパイルに失敗したようです。私はこの問題を引き起こしているのか分かりません。私は見渡して、数え切れないほどの小さなもので微妙に変化しましたが運がありません。私は明らかな何かを見逃すはずです。私は他の答えを読んだが、他のデバイスですでに動作しているゲームには当てはまらないようだ。以下は、私のシェーダコードと単純なOpenGL関数です。
public Shader(String data, int kind) throws IllegalArgumentException {
this.kind = kind;
shader = GLES20.glCreateShader(kind);
GLES20.glShaderSource(shader, data);
GLES20.glCompileShader(shader);
int[] compiled = new int[1];
GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compiled, 0);
if (compiled[0] == GLES20.GL_FALSE) {
String log = GLES20.glGetShaderInfoLog(shader);
dispose();
throw new IllegalArgumentException("Shader compilation error: " + log);
}
}
次に、シェーディングのためのOpenGL関数を示します。
public static final String VERT_SHADER =
"#version 100\n" +
"uniform float surfaceRatio;\n" +
"attribute vec2 position;\n" +
"void main() {\n" +
" gl_Position = vec4(position.x * surfaceRatio, position.y, 0.0f, 1.0f);\n" +
"}\n";
// The fragment shader code.
public static final String FRAG_SHADER =
"#version 100\n" +
"uniform vec3 color;\n" +
"void main() {\n" +
" gl_FragColor = vec4(color, 1.0f);\n" +
"}\n";
これらのクロスプラットフォームの問題を引き起こす可能性のある明白なことがあるかどうか教えてください。私は必要に応じてより多くのコードや情報を提供することができます。
これを先に試してみましたが、エラーはシェーダーの色変数の周りを回転しました。そこにも問題の可能性はありますか?私は後で特定のエラーテキストを提供することができます。私は現在私のターミナルから離れています。ご協力いただきありがとうございます。これは超有益だった。 – Runner5