OpenGL超级宝典第四版第十五章程序清单15.1如下:
//顶点着色器
void main(void)
{
//这是我们的"Hello World"顶点着色器
//注意注释行是以"//"为标志
//法线MVP转换
vec4 clipCoord=gl_ModelViewProjectionMatrix*gl_Vertex;
gl_Position=clipCoord;
//复制主颜色
gl_FrontColor=gl_Color;
//计算NDC
vec3 ndc=clipCoord.xyz/clipCoord.w;
//在输出之前人[-1,1]映射到[0,1]
gl_SecondaryColor=(ndc*0.5)+0.5;
}
//片元着色器
//这是我们的"Hello World"片元着色器
void main(void)
{
//混合主颜色和辅助着色,50/50
gl_FragColor=mix(gl_Color,vec4(vec3(gl_SecondaryColor),1.0),0.5);
}
这个程序在ShaderDesigner里面编译会报错呀:
Last build: 8:52:41
Compiling Vertex Shaders...
HelloWorld.vert
0(16) : warning C7564: assignment to attribute gl_SecondaryColor
0(16) : error C1035: assignment of incompatible types
|+++++++++++++++++++++++++++++++++++|
Compiling Fragment Shaders...
HelloWorld.frag
OK
|+++++++++++++++++++++++++++++++++++|
Linking all shaders....
Vertex info
-----------
0(16) : warning C7564: assignment to attribute gl_SecondaryColor
0(16) : error C1035: assignment of incompatible types
这是怎么回事呀?
assignment of incompatible types错误提示明显,楼主查一下赋值操作符二端类型是否一致。