1 网上大部分说是因为着色器代码中没有使用到这个变量,是一个原因
2 但是还有一个原因,openGL ES3.0 着色器代码api发生了变化,比如在2.0中texture2D()函数在3.0中需要用texture()函数来替代。
GLSL还有一个变化就是 之前的片段着色器输出变量 gl_FragColor 不能直接使用(因为着色器没有声明),必须声明才能使用。
// 2.0中可以直接使用 gl_FragColor
in vec4 Color;
void main()
{
gl_FragColor = Color;
}
// 3.0中不可以可以直接使用 gl_FragColor,必须声明输出变量
#version 300 es
in vec4 Color;
out vec4 outColor
void main()
{
outColor = Color;
}
以上两个原因导致着色器代码出现错误,从而opengl api调用失败。
附赠一个OpenglES3.0 结合Camera2 api 进行实时摄像头预览的demo,本文就是做这个demo时遇到的问题,后来解决了。

https://github.com/akbot48/Camera2WithOpenglEs3.0
解决OpenGL ES3.0着色器代码错误
本文分析了OpenGL ES3.0中着色器代码常见错误的原因,包括未使用的变量和API变化,如texture2D()替换为texture()及gl_FragColor的正确使用方式。并分享了一个结合Camera2 API进行实时摄像头预览的demo。
547

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



