我的GLSL着色器程序有一个空白窗口(白色)。我的程序编译良好,警告级别为4.我得到的唯一错误来自着色器:
两个着色器(顶点和片段)都出现此错误:
警告:0:? :':OGL 3.0前向兼容上下文驱动程序中不推荐使用版本号
frgment shader出现此错误:
错误0:1:'':语法错误:#version是强制性的,应该在任何其他令牌之前设置
我使用GLEW运行opengl 4.0并拥有intel HD 4000显卡。
顶点着色器:
#version 400
layout (std140) uniform Matrices {
mat4 pvm;
} ;
in vec4 position;
out vec4 color;
void main()
{
gl_Position = pvm * position ;
}
片段着色器
#version 330
out vec4 outputF;
void main()
{
outputF = vec4(1.0, 0.0, 0.0, 1.0);
}
文件读取方法:
static char* textFileRead(const char *fileName) {
char* text;
if (fileName != NULL) {
FILE *file = fopen(fileName, "rt");
if (file != NULL) {
fseek(file, 0, SEEK_END);
int count = ftell(file);
rewind(file);
if (count > 0) {
text = (char*)malloc(sizeof(char) * (count + 1));
count = fread(text, sizeof(char), count, file);
text[count] = '\0';
}
fclose(file);
}
}
return text;
}
我尝试过不同的着色器,删除版本号并更改版本号。