这个问题通常是由于数据类型不匹配导致的。例如,使用GLSL顶点着色器定义变量时,需要指定类型(如vec3, float等),如果类型不正确,则会出现这个错误。
以下是一个示例:
attribute vec4 vertexPosition;
attribute vec4 vertexColor;
varying vec4 color;
void main() {
gl_Position = vertexPosition;
color = vertexColor;
}
如果代码中出现类似以下的错误:
typename expected
请检查你的变量声明是否正确,以及是否使用了正确的数据类型。例如,在上面的代码中,如果将“attribute vec4 vertexColor”更改为“attribute typename vertexColor”,则会出现此错误。在这种情况下,应将“typename”更改为正确的GLSL数据类型。
此外,还要确保使用正确的版本号和扩展。可以在代码中添加以下代码来获取Open GL支持的版本和扩展:
const GLubyte* renderer = glGetString(GL_RENDERER);
const GLubyte* version = glGetString(GL_VERSION);
const GLubyte* extensions = glGetString(GL_EXTENSIONS);
printf("Renderer: %s\n", renderer);
printf("OpenGL version supported %s\n", version);
printf("Extensions supported %s\n", extensions);
希望这些提示对解决这个问题有所帮助。