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_simpleColorShader = new SimpleColorShader();
|
||||
m_simpleColorTextureShader = new SimpleColorTextureShader();
|
||||
m_simpleTextureShader = new SimpleTextureShader();
|
||||
m_simpleTextureVertexLerpShader = new SimpleTextureVertexLerpShader();
|
||||
m_simpleTextureVertexSkinningShader = new SimpleTextureVertexSkinningShader();
|
||||
m_sprite2dShader = new Sprite2DShader();
|
||||
m_sprite3dShader = new Sprite3DShader();
|
||||
m_debugShader = new DebugShader();
|
||||
|
||||
RegisterManagedResource(m_simpleColorShader);
|
||||
RegisterManagedResource(m_simpleColorTextureShader);
|
||||
RegisterManagedResource(m_simpleTextureShader);
|
||||
RegisterManagedResource(m_simpleTextureVertexLerpShader);
|
||||
RegisterManagedResource(m_simpleTextureVertexSkinningShader);
|
||||
RegisterManagedResource(m_sprite2dShader);
|
||||
RegisterManagedResource(m_sprite3dShader);
|
||||
RegisterManagedResource(m_debugShader);
|
||||
m_simpleColorShader = NULL;
|
||||
m_simpleColorTextureShader = NULL;
|
||||
m_simpleTextureShader = NULL;
|
||||
m_simpleTextureVertexLerpShader = NULL;
|
||||
m_simpleTextureVertexSkinningShader = NULL;
|
||||
m_sprite2dShader = NULL;
|
||||
m_sprite3dShader = NULL;
|
||||
m_debugShader = NULL;
|
||||
}
|
||||
|
||||
GraphicsDevice::~GraphicsDevice()
|
||||
{
|
||||
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_debugRenderer);
|
||||
SAFE_DELETE(m_solidColorTextures);
|
||||
|
@ -129,6 +111,102 @@ GraphicsDevice::~GraphicsDevice()
|
|||
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()
|
||||
{
|
||||
STACK_TRACE;
|
||||
|
|
|
@ -132,7 +132,7 @@ public:
|
|||
/**
|
||||
* @return the currently applied texture parameters
|
||||
*/
|
||||
const TextureParameters* GetTextureParameters() const { return &m_currentTextureParams; }
|
||||
const TextureParameters* GetTextureParameters() const { return &m_currentTextureParams; }
|
||||
|
||||
/**
|
||||
* Binds a renderbuffer.
|
||||
|
@ -173,7 +173,7 @@ public:
|
|||
/**
|
||||
* @return the current ViewContext object
|
||||
*/
|
||||
ViewContext* GetViewContext() const { return m_activeViewContext; }
|
||||
ViewContext* GetViewContext() const { return m_activeViewContext; }
|
||||
|
||||
/**
|
||||
* Sets a new active ViewContext which will be applied immediately.
|
||||
|
@ -295,56 +295,63 @@ public:
|
|||
/**
|
||||
* @return a debug geometry renderer
|
||||
*/
|
||||
GeometryDebugRenderer* GetDebugRenderer() const { return m_debugRenderer; }
|
||||
GeometryDebugRenderer* GetDebugRenderer() const { return m_debugRenderer; }
|
||||
|
||||
/**
|
||||
* @return built-in shader
|
||||
*/
|
||||
SimpleColorShader* GetSimpleColorShader() const { return m_simpleColorShader; }
|
||||
SimpleColorShader* GetSimpleColorShader();
|
||||
|
||||
/**
|
||||
* @return built-in shader
|
||||
*/
|
||||
SimpleColorTextureShader* GetSimpleColorTextureShader() const { return m_simpleColorTextureShader; }
|
||||
SimpleColorTextureShader* GetSimpleColorTextureShader();
|
||||
|
||||
/**
|
||||
* @return built-in shader
|
||||
*/
|
||||
SimpleTextureShader* GetSimpleTextureShader() const { return m_simpleTextureShader; }
|
||||
SimpleTextureShader* GetSimpleTextureShader();
|
||||
|
||||
/**
|
||||
* @return built-in shader
|
||||
*/
|
||||
Sprite2DShader* GetSprite2DShader() const { return m_sprite2dShader; }
|
||||
Sprite2DShader* GetSprite2DShader();
|
||||
|
||||
/**
|
||||
* @return built-in shader
|
||||
*/
|
||||
Sprite3DShader* GetSprite3DShader() const { return m_sprite3dShader; }
|
||||
|
||||
SimpleTextureVertexLerpShader* GetSimpleTextureVertexLerpShader() const { return m_simpleTextureVertexLerpShader; }
|
||||
SimpleTextureVertexSkinningShader* GetSimpleTextureVertexSkinningShader() const { return m_simpleTextureVertexSkinningShader; }
|
||||
Sprite3DShader* GetSprite3DShader();
|
||||
|
||||
/**
|
||||
* @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
|
||||
*/
|
||||
BOOL IsDepthTextureSupported() const { return m_isDepthTextureSupported; }
|
||||
BOOL IsDepthTextureSupported() const { return m_isDepthTextureSupported; }
|
||||
|
||||
/**
|
||||
* @return TRUE if textures with dimensions that are not a power of two
|
||||
* are supported
|
||||
*/
|
||||
BOOL IsNonPowerOfTwoTextureSupported() const { return m_isNonPowerOfTwoTextureSupported; }
|
||||
BOOL IsNonPowerOfTwoTextureSupported() const { return m_isNonPowerOfTwoTextureSupported; }
|
||||
|
||||
/**
|
||||
* @return the parent window object that this graphics device is for
|
||||
*/
|
||||
GameWindow* GetWindow() const { return m_window; }
|
||||
GameWindow* GetWindow() const { return m_window; }
|
||||
|
||||
private:
|
||||
void BindVBO(VertexBuffer *buffer);
|
||||
|
|
Reference in a new issue