今天在学习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 加载出错 。最后绘制不出来
本文记录了在使用OpenGl进行图形绘制时遇到的着色器加载问题及解决方案。作者在开发过程中发现,如果不为着色器中的浮点数添加后缀'f',新版OpenGl将无法正确加载着色器,导致绘制失败。通过修正这一细节,成功解决了图形绘制不出的问题。
1404

被折叠的 条评论
为什么被折叠?



