[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