OpenGL着色器信息结果错误
我在Windows 7上使用glew,当我调用时:OpenGL着色器信息结果错误,opengl,shader,Opengl,Shader,我在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 vInfoLogMessa
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上有时会出现bug,但我没有使用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;
}
编译结果告诉您什么?它返回为成功(1),但我根本不了解有关infoLog的任何信息,也不了解长度(始终返回0),也不了解消息(从不填充字符数组)。从我看到的一些教程中,它应该也会返回成功的消息。当出现错误时,它是否会返回非零长度?您的驱动程序可能对有效的着色器没有任何说明。当我出错时,它返回0,然后InfoLength被正确修复!我原以为它应该一直归还一些东西,这让我很烦!谢谢