[Libreoffice-commits] core.git: Branch 'feature/chart-opengl2' - chart2/source
Michael Meeks
michael.meeks at collabora.com
Thu Jan 2 07:42:43 PST 2014
chart2/source/view/main/OpenGLRender.cxx | 53 +++++++++++++++++++++----------
1 file changed, 36 insertions(+), 17 deletions(-)
New commits:
commit 805d2a4cde2ff16c396b6dbe4712c4760a081cdb
Author: Michael Meeks <michael.meeks at collabora.com>
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);
More information about the Libreoffice-commits
mailing list