今天在学习OpenGl 的时候 准备用ndk 做绘制开发。然后在c++ 中 写了一个shader 是这样的
const char *vertex = "attribute vec4 v_position;\n"
"\n"
"void main(){\n"
" gl_Position = v_position;\n"
"}";
const char *fragment = "precision mediump float;\n"
"\n"
"void main(){\n"
" gl_FragColor = vec4(1,0,0,1);\n"
"}";
然后在draw里进行绘制
glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glUseProgram(program);
glEnableVertexAttribArray(vPosition);
glVertexAttribPointer(vPosition, 2, GL_FLOAT, false, 8, vertexs);
glEnableVertexAttribArray(fPosition);
glVertexAttribPointer(fPosition, 2, GL_FLOAT, false, 8, fragments);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
最后运行 死活出不来 图形 。。。 咋回事呢。查了好几天也没看出问题 。 后来让我发现了 其实是shader 的问题
const char *fragment = "precision mediump float;\n"
"\n"
"void main(){\n"
" gl_FragColor = vec4(1f,0f,0f,1f);\n"
"}";
我这里把着色器颜色写死了。红色 然后 可能是版本的问题 之前这个是没问题的。新版的 如果后缀不带f 你这个shader 加载是会出问题的。导致 shader 加载出错 。最后绘制不出来