chart2/source/view/main/OpenGLRender.cxx | 53 +++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 17 deletions(-)
New commits: commit 805d2a4cde2ff16c396b6dbe4712c4760a081cdb Author: Michael Meeks <[email protected]> Date: Thu Jan 2 15:41:52 2014 +0000 get better fragment / shader error logging. Change-Id: I49c344b9a94cd4d60bb2dc0667d88387b5474b6b diff --git a/chart2/source/view/main/OpenGLRender.cxx b/chart2/source/view/main/OpenGLRender.cxx index 2090e03..7d4717e 100644 --- a/chart2/source/view/main/OpenGLRender.cxx +++ b/chart2/source/view/main/OpenGLRender.cxx @@ -283,11 +283,18 @@ GLint OpenGLRender::LoadShaders(const char *vertexShader,const char *fragmentSha // Check Vertex Shader glGetShaderiv(VertexShaderID, GL_COMPILE_STATUS, &Result); - glGetShaderiv(VertexShaderID, GL_INFO_LOG_LENGTH, &InfoLogLength); - if ( InfoLogLength > 0 ){ - std::vector<char> VertexShaderErrorMessage(InfoLogLength+1); - glGetShaderInfoLog(VertexShaderID, InfoLogLength, NULL, &VertexShaderErrorMessage[0]); - cout << "vertex shader compile fail : " << VertexShaderErrorMessage[0] << endl; + if ( !Result ) + { + glGetShaderiv(VertexShaderID, GL_INFO_LOG_LENGTH, &InfoLogLength); + if ( InfoLogLength > 0 ) + { + std::vector<char> VertexShaderErrorMessage(InfoLogLength+1); + glGetShaderInfoLog(VertexShaderID, InfoLogLength, NULL, &VertexShaderErrorMessage[0]); + VertexShaderErrorMessage.push_back('\0'); + cout << "vertex shader compile fail : " << &VertexShaderErrorMessage[0] << endl; + } + else + cout << "vertex shader compile failed without error log" << endl; } @@ -299,15 +306,20 @@ GLint OpenGLRender::LoadShaders(const char *vertexShader,const char *fragmentSha // Check Fragment Shader glGetShaderiv(FragmentShaderID, GL_COMPILE_STATUS, &Result); - glGetShaderiv(FragmentShaderID, GL_INFO_LOG_LENGTH, &InfoLogLength); - if ( InfoLogLength > 0 ){ - std::vector<char> FragmentShaderErrorMessage(InfoLogLength+1); - glGetShaderInfoLog(FragmentShaderID, InfoLogLength, NULL, &FragmentShaderErrorMessage[0]); - cout << "fragment shader compile fail : " << FragmentShaderErrorMessage[0] << endl; + if ( !Result ) + { + glGetShaderiv(FragmentShaderID, GL_INFO_LOG_LENGTH, &InfoLogLength); + if ( InfoLogLength > 0 ) + { + std::vector<char> FragmentShaderErrorMessage(InfoLogLength+1); + glGetShaderInfoLog(FragmentShaderID, InfoLogLength, NULL, &FragmentShaderErrorMessage[0]); + FragmentShaderErrorMessage.push_back('\0'); + cout << "fragment shader compile fail : " << &FragmentShaderErrorMessage[0] << endl; + } + else + cout << "fragment shader compile failed without error log" << endl; } - - // Link the program GLint ProgramID = glCreateProgram(); glAttachShader(ProgramID, VertexShaderID); @@ -316,11 +328,18 @@ GLint OpenGLRender::LoadShaders(const char *vertexShader,const char *fragmentSha // Check the program glGetProgramiv(ProgramID, GL_LINK_STATUS, &Result); - glGetProgramiv(ProgramID, GL_INFO_LOG_LENGTH, &InfoLogLength); - if ( InfoLogLength > 0 ){ - std::vector<char> ProgramErrorMessage(InfoLogLength+1); - glGetProgramInfoLog(ProgramID, InfoLogLength, NULL, &ProgramErrorMessage[0]); - cout << "Shader Program fail : " << ProgramErrorMessage[0] << endl; + if ( !Result ) + { + glGetProgramiv(ProgramID, GL_INFO_LOG_LENGTH, &InfoLogLength); + if ( InfoLogLength > 0 ) + { + std::vector<char> ProgramErrorMessage(InfoLogLength+1); + glGetProgramInfoLog(ProgramID, InfoLogLength, NULL, &ProgramErrorMessage[0]); + ProgramErrorMessage.push_back('\0'); + cout << "Shader Program fail : " << &ProgramErrorMessage[0] << endl; + } + else + cout << "shader program link failed without error log" << endl; } glDeleteShader(VertexShaderID); _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
