Merge pull request #1829 from irei1as/patch-1

Adding depth option to the texture of guiOffscreenCanvas
This commit is contained in:
Anis 2017-01-02 11:52:36 +01:00 committed by GitHub
commit d164781329
2 changed files with 14 additions and 0 deletions

View file

@ -18,6 +18,7 @@ GuiOffscreenCanvas::GuiOffscreenCanvas()
mTargetName = "offscreenCanvas";
mTargetDirty = true;
mDynamicTarget = false;
mUseDepth = false;
}
GuiOffscreenCanvas::~GuiOffscreenCanvas()
@ -30,6 +31,7 @@ void GuiOffscreenCanvas::initPersistFields()
addField( "targetFormat", TypeGFXFormat, Offset( mTargetFormat, GuiOffscreenCanvas ), "");
addField( "targetName", TypeRealString, Offset( mTargetName, GuiOffscreenCanvas ), "");
addField( "dynamicTarget", TypeBool, Offset( mDynamicTarget, GuiOffscreenCanvas ), "");
addField( "useDepth", TypeBool, Offset( mUseDepth, GuiOffscreenCanvas ), "");
Parent::initPersistFields();
}
@ -70,6 +72,7 @@ void GuiOffscreenCanvas::onRemove()
mTarget = NULL;
mTargetTexture = NULL;
mTargetDepth = NULL;
Parent::onRemove();
}
@ -89,6 +92,13 @@ void GuiOffscreenCanvas::_setupTargets()
mTargetTexture.set( mTargetSize.x, mTargetSize.y, mTargetFormat, &GFXDefaultRenderTargetProfile, avar( "%s() - (line %d)", __FUNCTION__, __LINE__ ), 1, 0 );
}
// Update depth if needed
if (mUseDepth && (!mTargetDepth.isValid() || mTargetSize != mTargetDepth.getWidthHeight()))
{
mTargetDepth.set( mTargetSize.x, mTargetSize.y, GFXFormatD24S8, &GFXDefaultZTargetProfile, avar( "%s() - (line %d)", __FUNCTION__, __LINE__ ), 1, 0 );
mTarget->attachTexture( GFXTextureTarget::RenderSlot(GFXTextureTarget::DepthStencil), mTargetDepth );
}
mTarget->attachTexture( GFXTextureTarget::RenderSlot(GFXTextureTarget::Color0), mTargetTexture );
mNamedTarget.setTexture(0, mTargetTexture);
}
@ -97,6 +107,7 @@ void GuiOffscreenCanvas::_teardownTargets()
{
mNamedTarget.release();
mTargetTexture = NULL;
mTargetDepth = NULL;
mTargetDirty = true;
}

View file

@ -56,6 +56,9 @@ protected:
bool mTargetDirty;
bool mDynamicTarget;
bool mUseDepth;
GFXTexHandle mTargetDepth;
public:
static Vector<GuiOffscreenCanvas*> sList;