|
|
在nVidia显卡上,GLSL代码编译总是出错。以下为创建vertex shader的代码, 使用了OpenGL2.0的API。
其中m_hVertexShader的类型为GLuint
- bool LoadVSCode(const char* strCode)
- {
- if(m_hVertexShader == 0)
- {
- m_hVertexShader = glCreateShader(GL_VERTEX_SHADER);
- }
- GLint bVSCompiled;
- glShaderSource(m_hVertexShader, 1, &strCode, NULL);
- glCompileShader(m_hVertexShader);
- glGetShaderiv(m_hVertexShader, GL_COMPILE_STATUS, &bVSCompiled); //在此处bVSCompiled的返回值总是为0,说明编译有错误。
- if(bVSCompiled == GL_FALSE)
- {
- char strInfoLog[512];
- glGetShaderInfoLog(m_hVertexShader, 512, NULL, strInfoLog);
- return false;
- }
- return true;
- }
- //以下为vertex shader 的代码:
- void main()
- {
- gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
- gl_TexCoord[0] = gl_MultiTexCoord0;
- }
复制代码
调用函数glGetShaderInfoLog(m_hVertexShader, 512, NULL, strInfoLog) 得到的错误信息strInfoLog为:
0x0012f0a0 "(6) : error C0000: syntax error, unexpected $undefined at token "<undefined>"
(6) : error C0501: type name expected at token "<undefined>""
以上代码我在nVidia GeForce 6200, GeForce 8400 和 GeForce 9600上测试都是同样的错误.
但是在ATI显卡上却能正常运行.
有人碰到过同样的情况吗?
|
|