OpenGL을 사용하여 간단한 안드로이드 게임을 만들려고하고 있습니다. s7 및 Nexus 5 에뮬레이터에서 응용 프로그램을 빌드하고 실행할 수 있었지만 s6에서 실행하려고 시도했지만 실패했습니다.S6 셰이더를 만들 때 안드로이드 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