有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

错误[0]永远不会改变。如果注释行“err[0]=555;”,值err[0]将为0

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

@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) 
{}

也许我的显卡有问题?谢谢


同样的问题。我没有编译错误。只需函数glGetShaderiv,不返回结果。这里我有err[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) 个答案

  1. # 1 楼答案

    您需要将一个值写回gl_Position

    在你的主体部分写gl_Position = vec4(0.0f,0.0f,0.0f,0.0f);;这应该允许着色器编译

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