mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-07-10 12:25:50 +03:00
0030643: Visualization, Ray-Tracing - shader compilation errors are not properly logged
OpenGl_View::initShader() now uses OpenGl_ShaderObject::LoadAndCompile().
This commit is contained in:
parent
98e6c6d17b
commit
74413ca7d3
@ -1194,71 +1194,20 @@ Handle(OpenGl_ShaderObject) OpenGl_View::initShader (const GLenum
|
|||||||
const Handle(OpenGl_Context)& theGlContext)
|
const Handle(OpenGl_Context)& theGlContext)
|
||||||
{
|
{
|
||||||
Handle(OpenGl_ShaderObject) aShader = new OpenGl_ShaderObject (theType);
|
Handle(OpenGl_ShaderObject) aShader = new OpenGl_ShaderObject (theType);
|
||||||
|
|
||||||
if (!aShader->Create (theGlContext))
|
if (!aShader->Create (theGlContext))
|
||||||
{
|
{
|
||||||
const TCollection_ExtendedString aMessage = TCollection_ExtendedString ("Error: Failed to create ") +
|
theGlContext->PushMessage (GL_DEBUG_SOURCE_APPLICATION, GL_DEBUG_TYPE_ERROR, 0, GL_DEBUG_SEVERITY_HIGH,
|
||||||
(theType == GL_VERTEX_SHADER ? "vertex" : "fragment") + " shader object";
|
TCollection_ExtendedString ("Error: Failed to create ") +
|
||||||
|
(theType == GL_VERTEX_SHADER ? "vertex" : "fragment") + " shader object");
|
||||||
theGlContext->PushMessage (GL_DEBUG_SOURCE_APPLICATION,
|
aShader->Release (theGlContext.get());
|
||||||
GL_DEBUG_TYPE_ERROR, 0, GL_DEBUG_SEVERITY_HIGH, aMessage);
|
|
||||||
|
|
||||||
aShader->Release (theGlContext.operator->());
|
|
||||||
|
|
||||||
return Handle(OpenGl_ShaderObject)();
|
return Handle(OpenGl_ShaderObject)();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!aShader->LoadSource (theGlContext, theSource.Source()))
|
if (!aShader->LoadAndCompile (theGlContext, "", theSource.Source()))
|
||||||
{
|
{
|
||||||
const TCollection_ExtendedString aMessage = TCollection_ExtendedString ("Error: Failed to set ") +
|
aShader->Release (theGlContext.get());
|
||||||
(theType == GL_VERTEX_SHADER ? "vertex" : "fragment") + " shader source";
|
|
||||||
|
|
||||||
theGlContext->PushMessage (GL_DEBUG_SOURCE_APPLICATION,
|
|
||||||
GL_DEBUG_TYPE_ERROR, 0, GL_DEBUG_SEVERITY_HIGH, aMessage);
|
|
||||||
|
|
||||||
aShader->Release (theGlContext.operator->());
|
|
||||||
|
|
||||||
return Handle(OpenGl_ShaderObject)();
|
return Handle(OpenGl_ShaderObject)();
|
||||||
}
|
}
|
||||||
|
|
||||||
TCollection_AsciiString aBuildLog;
|
|
||||||
|
|
||||||
if (!aShader->Compile (theGlContext))
|
|
||||||
{
|
|
||||||
aShader->FetchInfoLog (theGlContext, aBuildLog);
|
|
||||||
|
|
||||||
const TCollection_ExtendedString aMessage = TCollection_ExtendedString ("Error: Failed to compile ") +
|
|
||||||
(theType == GL_VERTEX_SHADER ? "vertex" : "fragment") + " shader object:\n" + aBuildLog;
|
|
||||||
|
|
||||||
theGlContext->PushMessage (GL_DEBUG_SOURCE_APPLICATION,
|
|
||||||
GL_DEBUG_TYPE_ERROR, 0, GL_DEBUG_SEVERITY_HIGH, aMessage);
|
|
||||||
|
|
||||||
aShader->Release (theGlContext.operator->());
|
|
||||||
|
|
||||||
#ifdef RAY_TRACE_PRINT_INFO
|
|
||||||
std::cout << "Shader build log:\n" << aBuildLog << "\n";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return Handle(OpenGl_ShaderObject)();
|
|
||||||
}
|
|
||||||
else if (theGlContext->caps->glslWarnings)
|
|
||||||
{
|
|
||||||
aShader->FetchInfoLog (theGlContext, aBuildLog);
|
|
||||||
|
|
||||||
if (!aBuildLog.IsEmpty() && !aBuildLog.IsEqual ("No errors.\n"))
|
|
||||||
{
|
|
||||||
const TCollection_ExtendedString aMessage = TCollection_ExtendedString (theType == GL_VERTEX_SHADER ?
|
|
||||||
"Vertex" : "Fragment") + " shader was compiled with following warnings:\n" + aBuildLog;
|
|
||||||
|
|
||||||
theGlContext->PushMessage (GL_DEBUG_SOURCE_APPLICATION,
|
|
||||||
GL_DEBUG_TYPE_PORTABILITY, 0, GL_DEBUG_SEVERITY_LOW, aMessage);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef RAY_TRACE_PRINT_INFO
|
|
||||||
std::cout << "Shader build log:\n" << aBuildLog << "\n";
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
return aShader;
|
return aShader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user