Ich versuche, ein einfaches Android-Spiel mit OpenGL zu machen und es lief ziemlich reibungslos bis vor kurzem. Ich konnte die Anwendung auf einem s7 und einem Nexus 5 Emulator erstellen und ausführen, aber meine Versuche, es auf meinem s6 auszuführen, scheitern.S6 Android OpenGL Compilation schlägt fehl beim Erstellen Shader
Es schien, dass der Shader nicht kompilieren konnte. Ich bin mir nicht sicher, was dieses Problem verursacht. Ich habe über viele kleine Dinge nachgedacht und gebastelt, aber ohne Glück. Ich denke, ich muss etwas Offensichtliches vermissen. Ich habe andere Antworten gelesen, aber sie scheinen nicht auf ein Spiel anzuwenden, das bereits auf anderen Geräten funktioniert. Unten finden Sie meinen Shader-Code und die einfachen OpenGL-Funktionen.
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);
}
}
Und hier sind die OpenGL-Funktionen für die Schattierung.
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";
Lassen Sie mich wissen, ob etwas offensichtlich ist, das ich vermisse, das diese plattformübergreifenden Probleme verursachen würde. Ich kann bei Bedarf mehr Code oder Informationen bereitstellen.
Ich versuchte dies früher und der Fehler drehte sich dann um die Farbvariable im Shader. Gibt es dort auch Potenzial für ein Problem? Ich kann den spezifischen Fehlertext später zur Verfügung stellen. Ich bin momentan von meinem Terminal entfernt. Danke für Ihre Hilfe. Das war super informativ. – Runner5