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 楼答案
您需要将一个值写回
gl_Position
在你的主体部分写
gl_Position = vec4(0.0f,0.0f,0.0f,0.0f);
;这应该允许着色器编译您还必须确保通知Dalvik您希望使用OpenGL ES 2.0上下文;这是通过调用
setEGLContextVersion(2)
来完成的