OpenGL ES 2.0: glGetShaderiv не меняя параметры
У меня есть этот код:
String vertexShaderText =
"void main()\n"
+ "{\n"
+ "}\n";
int vertexShader = GLES20.glCreateShader(GLES20.GL_VERTEX_SHADER);
GLES20.glShaderSource(vertexShader, vertexShaderText);
GLES20.glCompileShader(vertexShader);
int[] err = new int[1];
err[0] = 555;
GLES20.glGetShaderiv(vertexShader, GLES20.GL_COMPILE_STATUS, err, 0);
И err [0] никогда не меняется. Если строка комментария "err[0] = 555;", значение err [0] будет 0.
vertexShader имеет значение 43(не ноль) и этот код из функции переопределения
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config)
{}
Может быть, у меня проблемы с видеокартой устройства? Спасибо!
та же проблема. У меня нет ошибки компиляции. Просто функция glGetShaderiv не возвращает результат. Здесь у меня есть ошибка [0] == 0
String vertexShaderText =
"void main()"
+ "{"
+ " gl_Position = vec4(0.0, 0.0, 0.0, 0.0);"
+ "}";
int vertexShader = GLES20.glCreateShader(GLES20.GL_VERTEX_SHADER);
GLES20.glShaderSource(vertexShader, vertexShaderText);
GLES20.glCompileShader(vertexShader);
int[] err = new int[1];
GLES20.glGetShaderiv(vertexShader, GLES20.GL_COMPILE_STATUS, err, 0);
1 ответ
Вы должны записать значение обратно в gl_Position
,
В своем основном теле напишите gl_Position = vec4(0.0f,0.0f,0.0f,0.0f);
; это должно позволить шейдеру скомпилироваться.
Вы также должны сообщить Dalvik, что хотите использовать контекст OpenGL ES 2.0; это делается по телефону setEGLContextVersion(2)
,