mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-16 09:04:38 +00:00
Merge pull request #1829 from irei1as/patch-1
Adding depth option to the texture of guiOffscreenCanvas
This commit is contained in:
commit
d164781329
2 changed files with 14 additions and 0 deletions
|
|
@ -18,6 +18,7 @@ GuiOffscreenCanvas::GuiOffscreenCanvas()
|
||||||
mTargetName = "offscreenCanvas";
|
mTargetName = "offscreenCanvas";
|
||||||
mTargetDirty = true;
|
mTargetDirty = true;
|
||||||
mDynamicTarget = false;
|
mDynamicTarget = false;
|
||||||
|
mUseDepth = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
GuiOffscreenCanvas::~GuiOffscreenCanvas()
|
GuiOffscreenCanvas::~GuiOffscreenCanvas()
|
||||||
|
|
@ -30,6 +31,7 @@ void GuiOffscreenCanvas::initPersistFields()
|
||||||
addField( "targetFormat", TypeGFXFormat, Offset( mTargetFormat, GuiOffscreenCanvas ), "");
|
addField( "targetFormat", TypeGFXFormat, Offset( mTargetFormat, GuiOffscreenCanvas ), "");
|
||||||
addField( "targetName", TypeRealString, Offset( mTargetName, GuiOffscreenCanvas ), "");
|
addField( "targetName", TypeRealString, Offset( mTargetName, GuiOffscreenCanvas ), "");
|
||||||
addField( "dynamicTarget", TypeBool, Offset( mDynamicTarget, GuiOffscreenCanvas ), "");
|
addField( "dynamicTarget", TypeBool, Offset( mDynamicTarget, GuiOffscreenCanvas ), "");
|
||||||
|
addField( "useDepth", TypeBool, Offset( mUseDepth, GuiOffscreenCanvas ), "");
|
||||||
|
|
||||||
Parent::initPersistFields();
|
Parent::initPersistFields();
|
||||||
}
|
}
|
||||||
|
|
@ -70,6 +72,7 @@ void GuiOffscreenCanvas::onRemove()
|
||||||
|
|
||||||
mTarget = NULL;
|
mTarget = NULL;
|
||||||
mTargetTexture = NULL;
|
mTargetTexture = NULL;
|
||||||
|
mTargetDepth = NULL;
|
||||||
|
|
||||||
Parent::onRemove();
|
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 );
|
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 );
|
mTarget->attachTexture( GFXTextureTarget::RenderSlot(GFXTextureTarget::Color0), mTargetTexture );
|
||||||
mNamedTarget.setTexture(0, mTargetTexture);
|
mNamedTarget.setTexture(0, mTargetTexture);
|
||||||
}
|
}
|
||||||
|
|
@ -97,6 +107,7 @@ void GuiOffscreenCanvas::_teardownTargets()
|
||||||
{
|
{
|
||||||
mNamedTarget.release();
|
mNamedTarget.release();
|
||||||
mTargetTexture = NULL;
|
mTargetTexture = NULL;
|
||||||
|
mTargetDepth = NULL;
|
||||||
mTargetDirty = true;
|
mTargetDirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,9 @@ protected:
|
||||||
|
|
||||||
bool mTargetDirty;
|
bool mTargetDirty;
|
||||||
bool mDynamicTarget;
|
bool mDynamicTarget;
|
||||||
|
|
||||||
|
bool mUseDepth;
|
||||||
|
GFXTexHandle mTargetDepth;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static Vector<GuiOffscreenCanvas*> sList;
|
static Vector<GuiOffscreenCanvas*> sList;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue