Mercurial > hg > orthanc-stone
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, |