update GraphicsDevice's built-in shader properties. now initializes them only on first-access (lazy-load)
This commit is contained in:
parent
543e6bf409
commit
07abad71c2
|
@ -84,37 +84,19 @@ GraphicsDevice::GraphicsDevice(GameWindow *window)
|
||||||
|
|
||||||
m_solidColorTextures = new SolidColorTextureCache(this);
|
m_solidColorTextures = new SolidColorTextureCache(this);
|
||||||
|
|
||||||
m_simpleColorShader = new SimpleColorShader();
|
m_simpleColorShader = NULL;
|
||||||
m_simpleColorTextureShader = new SimpleColorTextureShader();
|
m_simpleColorTextureShader = NULL;
|
||||||
m_simpleTextureShader = new SimpleTextureShader();
|
m_simpleTextureShader = NULL;
|
||||||
m_simpleTextureVertexLerpShader = new SimpleTextureVertexLerpShader();
|
m_simpleTextureVertexLerpShader = NULL;
|
||||||
m_simpleTextureVertexSkinningShader = new SimpleTextureVertexSkinningShader();
|
m_simpleTextureVertexSkinningShader = NULL;
|
||||||
m_sprite2dShader = new Sprite2DShader();
|
m_sprite2dShader = NULL;
|
||||||
m_sprite3dShader = new Sprite3DShader();
|
m_sprite3dShader = NULL;
|
||||||
m_debugShader = new DebugShader();
|
m_debugShader = NULL;
|
||||||
|
|
||||||
RegisterManagedResource(m_simpleColorShader);
|
|
||||||
RegisterManagedResource(m_simpleColorTextureShader);
|
|
||||||
RegisterManagedResource(m_simpleTextureShader);
|
|
||||||
RegisterManagedResource(m_simpleTextureVertexLerpShader);
|
|
||||||
RegisterManagedResource(m_simpleTextureVertexSkinningShader);
|
|
||||||
RegisterManagedResource(m_sprite2dShader);
|
|
||||||
RegisterManagedResource(m_sprite3dShader);
|
|
||||||
RegisterManagedResource(m_debugShader);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GraphicsDevice::~GraphicsDevice()
|
GraphicsDevice::~GraphicsDevice()
|
||||||
{
|
{
|
||||||
STACK_TRACE;
|
STACK_TRACE;
|
||||||
UnregisterManagedResource(m_simpleColorShader);
|
|
||||||
UnregisterManagedResource(m_simpleColorTextureShader);
|
|
||||||
UnregisterManagedResource(m_simpleTextureShader);
|
|
||||||
UnregisterManagedResource(m_simpleTextureVertexLerpShader);
|
|
||||||
UnregisterManagedResource(m_simpleTextureVertexSkinningShader);
|
|
||||||
UnregisterManagedResource(m_sprite2dShader);
|
|
||||||
UnregisterManagedResource(m_sprite3dShader);
|
|
||||||
UnregisterManagedResource(m_debugShader);
|
|
||||||
|
|
||||||
SAFE_DELETE(m_defaultViewContext);
|
SAFE_DELETE(m_defaultViewContext);
|
||||||
SAFE_DELETE(m_debugRenderer);
|
SAFE_DELETE(m_debugRenderer);
|
||||||
SAFE_DELETE(m_solidColorTextures);
|
SAFE_DELETE(m_solidColorTextures);
|
||||||
|
@ -129,6 +111,102 @@ GraphicsDevice::~GraphicsDevice()
|
||||||
SAFE_DELETE_ARRAY(m_boundTextures);
|
SAFE_DELETE_ARRAY(m_boundTextures);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SimpleColorShader* GraphicsDevice::GetSimpleColorShader()
|
||||||
|
{
|
||||||
|
STACK_TRACE;
|
||||||
|
if (m_simpleColorShader == NULL)
|
||||||
|
{
|
||||||
|
m_simpleColorShader = new SimpleColorShader();
|
||||||
|
m_simpleColorShader->Initialize(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_simpleColorShader;
|
||||||
|
}
|
||||||
|
|
||||||
|
SimpleColorTextureShader* GraphicsDevice::GetSimpleColorTextureShader()
|
||||||
|
{
|
||||||
|
STACK_TRACE;
|
||||||
|
if (m_simpleColorTextureShader == NULL)
|
||||||
|
{
|
||||||
|
m_simpleColorTextureShader = new SimpleColorTextureShader();
|
||||||
|
m_simpleColorTextureShader->Initialize(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_simpleColorTextureShader;
|
||||||
|
}
|
||||||
|
|
||||||
|
SimpleTextureShader* GraphicsDevice::GetSimpleTextureShader()
|
||||||
|
{
|
||||||
|
STACK_TRACE;
|
||||||
|
if (m_simpleTextureShader == NULL)
|
||||||
|
{
|
||||||
|
m_simpleTextureShader = new SimpleTextureShader();
|
||||||
|
m_simpleTextureShader->Initialize(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_simpleTextureShader;
|
||||||
|
}
|
||||||
|
|
||||||
|
Sprite2DShader* GraphicsDevice::GetSprite2DShader()
|
||||||
|
{
|
||||||
|
STACK_TRACE;
|
||||||
|
if (m_sprite2dShader == NULL)
|
||||||
|
{
|
||||||
|
m_sprite2dShader = new Sprite2DShader();
|
||||||
|
m_sprite2dShader->Initialize(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_sprite2dShader;
|
||||||
|
}
|
||||||
|
|
||||||
|
Sprite3DShader* GraphicsDevice::GetSprite3DShader()
|
||||||
|
{
|
||||||
|
STACK_TRACE;
|
||||||
|
if (m_sprite3dShader == NULL)
|
||||||
|
{
|
||||||
|
m_sprite3dShader = new Sprite3DShader();
|
||||||
|
m_sprite3dShader->Initialize(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_sprite3dShader;
|
||||||
|
}
|
||||||
|
|
||||||
|
SimpleTextureVertexLerpShader* GraphicsDevice::GetSimpleTextureVertexLerpShader()
|
||||||
|
{
|
||||||
|
STACK_TRACE;
|
||||||
|
if (m_simpleTextureVertexLerpShader == NULL)
|
||||||
|
{
|
||||||
|
m_simpleTextureVertexLerpShader = new SimpleTextureVertexLerpShader();
|
||||||
|
m_simpleTextureVertexLerpShader->Initialize(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_simpleTextureVertexLerpShader;
|
||||||
|
}
|
||||||
|
|
||||||
|
SimpleTextureVertexSkinningShader* GraphicsDevice::GetSimpleTextureVertexSkinningShader()
|
||||||
|
{
|
||||||
|
STACK_TRACE;
|
||||||
|
if (m_simpleTextureVertexSkinningShader == NULL)
|
||||||
|
{
|
||||||
|
m_simpleTextureVertexSkinningShader = new SimpleTextureVertexSkinningShader();
|
||||||
|
m_simpleTextureVertexSkinningShader->Initialize(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_simpleTextureVertexSkinningShader;
|
||||||
|
}
|
||||||
|
|
||||||
|
DebugShader* GraphicsDevice::GetDebugShader()
|
||||||
|
{
|
||||||
|
STACK_TRACE;
|
||||||
|
if (m_debugShader == NULL)
|
||||||
|
{
|
||||||
|
m_debugShader = new DebugShader();
|
||||||
|
m_debugShader->Initialize(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_debugShader;
|
||||||
|
}
|
||||||
|
|
||||||
void GraphicsDevice::OnNewContext()
|
void GraphicsDevice::OnNewContext()
|
||||||
{
|
{
|
||||||
STACK_TRACE;
|
STACK_TRACE;
|
||||||
|
|
|
@ -300,35 +300,42 @@ public:
|
||||||
/**
|
/**
|
||||||
* @return built-in shader
|
* @return built-in shader
|
||||||
*/
|
*/
|
||||||
SimpleColorShader* GetSimpleColorShader() const { return m_simpleColorShader; }
|
SimpleColorShader* GetSimpleColorShader();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return built-in shader
|
* @return built-in shader
|
||||||
*/
|
*/
|
||||||
SimpleColorTextureShader* GetSimpleColorTextureShader() const { return m_simpleColorTextureShader; }
|
SimpleColorTextureShader* GetSimpleColorTextureShader();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return built-in shader
|
* @return built-in shader
|
||||||
*/
|
*/
|
||||||
SimpleTextureShader* GetSimpleTextureShader() const { return m_simpleTextureShader; }
|
SimpleTextureShader* GetSimpleTextureShader();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return built-in shader
|
* @return built-in shader
|
||||||
*/
|
*/
|
||||||
Sprite2DShader* GetSprite2DShader() const { return m_sprite2dShader; }
|
Sprite2DShader* GetSprite2DShader();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return built-in shader
|
* @return built-in shader
|
||||||
*/
|
*/
|
||||||
Sprite3DShader* GetSprite3DShader() const { return m_sprite3dShader; }
|
Sprite3DShader* GetSprite3DShader();
|
||||||
|
|
||||||
SimpleTextureVertexLerpShader* GetSimpleTextureVertexLerpShader() const { return m_simpleTextureVertexLerpShader; }
|
|
||||||
SimpleTextureVertexSkinningShader* GetSimpleTextureVertexSkinningShader() const { return m_simpleTextureVertexSkinningShader; }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return built-in shader
|
* @return built-in shader
|
||||||
*/
|
*/
|
||||||
DebugShader* GetDebugShader() const { return m_debugShader; }
|
SimpleTextureVertexLerpShader* GetSimpleTextureVertexLerpShader();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return built-in shader
|
||||||
|
*/
|
||||||
|
SimpleTextureVertexSkinningShader* GetSimpleTextureVertexSkinningShader();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return built-in shader
|
||||||
|
*/
|
||||||
|
DebugShader* GetDebugShader();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return TRUE if depth textures are supported
|
* @return TRUE if depth textures are supported
|
||||||
|
|
Reference in a new issue