Я пытаюсь сделать простую игру Android с OpenGL, и до недавнего времени все было довольно гладко. Я смог создать и запустить приложение на 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