GlSplat must not crash if shaders are not availlable with the hardware+driver
This commit is contained in:
+16
-3
@@ -98,9 +98,10 @@ void SplatRenderer::configureShaders()
|
||||
{
|
||||
QString vsrc = shading + defines + mShaderSrcs[k*2+0];
|
||||
QString fsrc = shading + defines + mShaderSrcs[k*2+1];
|
||||
mShaders[k].loadSources(mShaderSrcs[k*2+0]!="" ? vsrc.toAscii().data() : 0,
|
||||
mShaderSrcs[k*2+1]!="" ? fsrc.toAscii().data() : 0/*,
|
||||
Shader::Warnings*/);
|
||||
if(!mShaders[k].loadSources(mShaderSrcs[k*2+0]!="" ? vsrc.toAscii().data() : 0,
|
||||
mShaderSrcs[k*2+1]!="" ? fsrc.toAscii().data() : 0/*,
|
||||
Shader::Warnings*/))
|
||||
mIsSupported = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -247,6 +248,14 @@ bool SplatRenderer::beginVisibilityPass()
|
||||
updateRenderBuffer();
|
||||
if (mCachedFlags != mFlags)
|
||||
configureShaders();
|
||||
|
||||
// configureShaders may detect that shaders are actually not supported.
|
||||
if (!isSupported())
|
||||
{
|
||||
std::cerr << "SplatRenderer error: not supported hardware\n";
|
||||
return false;
|
||||
}
|
||||
|
||||
mCachedFlags = mFlags;
|
||||
|
||||
mParams.update(mCachedMV, mCachedProj, mCachedVP);
|
||||
@@ -390,6 +399,10 @@ bool SplatRenderer::finalize()
|
||||
|
||||
void SplatRenderer::enablePass(int n)
|
||||
{
|
||||
if (!isSupported())
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (mBindedPass!=n)
|
||||
{
|
||||
if (mBindedPass>=0)
|
||||
|
||||
Reference in New Issue
Block a user