我有这段代码:
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);
答案 0 :(得分:0)
您需要将值写回gl_Position
。
在您的主体中,写下gl_Position = vec4(0.0f,0.0f,0.0f,0.0f);
;这应该允许着色器编译。
您还必须确保通知Dalvik您希望使用OpenGL ES 2.0上下文;这是通过致电setEGLContextVersion(2)
来完成的。