GlSplat must not crash if shaders are not availlable with the hardware+driver

This commit is contained in:
Laurent Rineau
2011-09-09 14:39:57 +00:00
parent e91475e722
commit 5f33a481fc
@@ -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)