comparison OrthancStone/Sources/OpenGL/OpenGLShader.cpp @ 2040:c6263f514f54 deep-learning

allow warnings while creating shaders
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 01 Feb 2023 08:04:51 +0100
parents 7053b8a0aaec
children 85a20cbfcc04
comparison
equal deleted inserted replaced
2039:e0906b7c67b9 2040:c6263f514f54
53 glShaderSource(shader, 1, sourceString, sourceStringLengths); 53 glShaderSource(shader, 1, sourceString, sourceStringLengths);
54 ORTHANC_OPENGL_CHECK("glShaderSource"); 54 ORTHANC_OPENGL_CHECK("glShaderSource");
55 glCompileShader(shader); 55 glCompileShader(shader);
56 ORTHANC_OPENGL_CHECK("glCompileShader"); 56 ORTHANC_OPENGL_CHECK("glCompileShader");
57 57
58 GLenum error = glGetError();
59
58 // Check if there were errors 60 // Check if there were errors
59 int infoLen = 0; 61 int infoLen = 0;
60 glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen); 62 glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
61 ORTHANC_OPENGL_CHECK("glGetShaderiv"); 63 ORTHANC_OPENGL_CHECK("glGetShaderiv");
62 64
63 if (infoLen > 1) // Might be equal to 1, which amounts to no error 65 if (infoLen > 1) // Might be equal to 1, which amounts to no error
64 { 66 {
65 std::string infoLog; 67 std::string infoLog;
66 infoLog.resize(infoLen + 1); 68 infoLog.resize(infoLen + 1);
67 glGetShaderInfoLog(shader, infoLen, NULL, &infoLog[0]); 69 glGetShaderInfoLog(shader, infoLen, NULL, &infoLog[0]);
68 ORTHANC_OPENGL_CHECK("glGetShaderInfoLog");
69 ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT("About to call glDeleteShader");
70 glDeleteShader(shader);
71 ORTHANC_OPENGL_CHECK("glDeleteShader");
72 70
73 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, 71 if (error)
74 "Error while creating an OpenGL shader: " + infoLog); 72 {
73 ORTHANC_OPENGL_CHECK("glGetShaderInfoLog");
74 ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT("About to call glDeleteShader");
75 glDeleteShader(shader);
76 ORTHANC_OPENGL_CHECK("glDeleteShader");
77
78 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError,
79 "Error while creating an OpenGL shader: " + infoLog);
80 }
81 else
82 {
83 LOG(WARNING) << "Warning while creating an OpenGL shader: " << infoLog;
84 }
75 } 85 }
76 else 86
77 { 87 return shader;
78 return shader;
79 }
80 } 88 }
81 } 89 }
82 90
83 91
84 OpenGLShader::OpenGLShader(GLenum type, 92 OpenGLShader::OpenGLShader(GLenum type,