У меня проблемы с компиляцией и выполнением простого приложения OpenGL в Mac OSX 10.9. В винде работает нормально. Но в Mac я продолжаю получать некоторые ошибки при связывании вершинного шейдера с фрагментным шейдером в программе шейдеров.
Вот мой консольный вывод.
4.1 INTEL-8.26.34
ERROR! could not link the shader program
WARNING: Output of vertex shader 'outColor' not read by fragment shader
ERROR: Input of fragment shader 'inColor' not written by vertex shader
Program ended with exit code: 0
Вот метод, который я использую, чтобы связать оба вместе.
GLuint createShaderProgram(GLuint vertexShader, GLuint fragmentShader)
{
// Create and link the shader program
GLuint shaderProgram = glCreateProgram(); // create handle
if (!shaderProgram) {
ERROR("could not create the shader program", false);
return NULL_HANDLE;
}
glAttachShader(shaderProgram, vertexShader); // attach vertex shader
glAttachShader(shaderProgram, fragmentShader); // attach fragment shader
glLinkProgram(shaderProgram);
// check to see if the linking was successful
int linked;
glGetProgramiv(shaderProgram, GL_LINK_STATUS, &linked); // get link status
if (!linked) {
ERROR("could not link the shader program", false);
int maxLength;
int length;
glGetProgramiv(shaderProgram, GL_INFO_LOG_LENGTH, &maxLength);
char* log = new char[maxLength];
glGetProgramInfoLog(shaderProgram, maxLength,&length,log);
printf(log);
return NULL_HANDLE;
}
return shaderProgram;
}
Вот мой вершинный шейдер.
#version 410 core
layout (location = 0) in vec3 inPosition;
layout (location = 3) in vec3 inColor;
layout (location = 3) smooth out vec4 outColor;
void main()
{
gl_Position = vec4(inPosition, 1.0);
outColor = vec4(inColor, 1.0);
}
Вот фрагшейдер
#version 410 core
layout (location = 3) smooth in vec4 inColor;
layout (location = 0) out vec4 outColor;
void main()
{
outColor = inColor;
}
Спасибо!!
#extension GL_ARB_separate_shader_objects : enable
в начало шейдера. - person Andon M. Coleman   schedule 17.06.2014gl_PerVertex
. Так что попробуйте также добавитьout gl_PerVertex { vec4 gl_Position; };
. Если даже это не исправит, то в этом можно обвинить Apple. - person Andon M. Coleman   schedule 17.06.2014