Opengl ES 2.0:glGetShaderiv没有改变参数

时间:2015-06-28 17:35:07

标签: java android opengl-es compilation shader

我有这段代码:

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);

并且错误[0]永远不会改变。如果注释行" err [0] = 555;",则值err [0]将为0.

vertexShader的值为43(非null),此代码来自覆盖函数

@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 个答案:

答案 0 :(得分:0)

您需要将值写回gl_Position

在您的主体中,写下gl_Position = vec4(0.0f,0.0f,0.0f,0.0f);;这应该允许着色器编译。

您还必须确保通知Dalvik您希望使用OpenGL ES 2.0上下文;这是通过致电setEGLContextVersion(2)来完成的。