Я пишу свою первую программу с использованием OpenGL, и я дошел до того, что пытаюсь заставить ее скомпилировать мою чрезвычайно простую шейдерную программу.Я всегда получаю ошибку, что не удалось скомпилировать шейдер.Я использую следующий код для компиляции шейдера:
struct Shader
{
const char* filename;
GLenum type;
GLchar* source;
};
...
static char* readShaderSource(const char* shaderFile)
{
FILE* fp = fopen(shaderFile, "r");
if ( fp == NULL ) { return NULL; }
fseek(fp, 0L, SEEK_END);
long size = ftell(fp);
fseek(fp, 0L, SEEK_SET);
char* buf = new char[size + 1];
fread(buf, 1, size, fp);
buf[size] = '\0';
fclose(fp);
return buf;
}
...
Shader s;
s.filename = "<name of shader file>";
s.type = GL_VERTEX_SHADER;
s.source = readShaderSource( s.filename );
GLuint shader = glCreateShader( s.type );
glShaderSource( shader, 1, (const GLchar**) &s.source, NULL );
glCompileShader( shader );
И мой источник файла шейдера выглядит следующим образом:
#version 150
in vec4 vPosition;
void main()
{
gl_Position = vPosition;
}
Я также попытался заменить «in» на «attribute» кака также удаление строки версии.Ничего не компилируется.Примечание. Моя настоящая C-программа компилируется и запускается.Шейдерная программа, которая запускается на графическом процессоре, - это то, что не компилируется.
Я также убедился, что скачал последний драйвер моей видеокарты.У меня есть NVIDIA 8800 GTS 512;
Есть идеи, как заставить мою шейдерную программу (написанную на GLSL) компилировать?