我在 Windows 7 上使用 glew,当我打电话时:
int compileResult = 0;
int infoLogLength = 0;
//compile code
glGetShaderiv(_vertexShaderID, GL_COMPILE_STATUS, &compileResult);
glGetShaderiv(_vertexShaderID, GL_INFO_LOG_LENGTH, &infoLogLength);
GLchar vInfoLogMessage[512];
glGetShaderInfoLog(_vertexShaderID, infoLogLength, NULL, vInfoLogMessage);
我不得不对 512 进行硬编码,因为infoLogLength总是返回 0。我用谷歌搜索它,发现它有时会在 Android 上发生,但我没有使用 Android SDK/NDK ......即使这样,vInfoLogMessage也是完全没有信息,无论是成功还是失败。
但是compileResult显示为已成功编译,但如果失败,我希望能够获取信息。
这可能是什么原因造成的?
编辑:程序链接返回一个错误,但我无法得到它,因为它没有填充 infoLogMessage ......
这是我的错误,它也成功返回。
着色器的代码(如果相关)是:
//fragmentShader
#version 330 core
out vec3 color;
void main()
{
color = vec3(1, 0, 0);
}
//vertexShader
#version 330 core
layout(location = 0) in vec3 vertexPosition_modelspace;
void main()
{
gl_Position.xyz = vertexPosition_modelspace;
gl_Position.w = 1.0;
}