[我正在android中使用openGl ES 3.0在屏幕上渲染矩形,并且我想使用着色器根据顶点位置生成颜色混合。
我确定问题出在顶点和片段着色器代码中,但我不知道这是什么,这些是着色器代码:
private final String vertexShaderCode =
"#version 300 es"+
"in vec3 position;" +
"out vec3 color;"+
"void main() {" +
" gl_Position = vec4(position.x,position.y,position.z,1.0);" +
" color = vec3(position.x+0.5,1.0,position.y+0.5);"+
"}";
private final String fragmentShaderCode =
"#version 300 es"+
"in vec3 color;"+
"out vec4 out_color;"+
"void main() {" +
" out_color= vec4(color.x,color.y,color.z,1.0);" +
"}";
我正在尝试根据顶点位置用颜色填充形状,因此它是每个像素生成的颜色的混合。
但是我不为什么它不起作用?
UPDATE:
我有3条信息:
由于无效的顶点着色器,链接失败。
语言版本'300'未知,此编译器仅支持版本'320 es'
#version指令后发现意外文本。
"#version 300 es\n"+
请参见OpenGL ES Shading Language 3.00 Specification - 3.4 Version Declaration:
#version
指令必须出现在着色器的第一行中,并且必须后跟换行符。此外,您必须为片段着色器添加浮点变量的精度限定符。例如:]]
"#version 300 es\n"+ "precision mediump float;\n"+
请参见OpenGL ES Shading Language 3.00 Specification - 4.5.4 Default Precision Qualifiers:
片段语言没有浮点类型的默认精度限定符。因此,对于浮点,浮点向量和矩阵变量声明,声明必须包含精度限定符,或者必须事先声明默认的浮点精度。