Added abstract methods to Renderer for state setting.

TRAC #22041 Added abstract methods for setting rasterizer, blend, depth stencil, render targets and scissors on Renderer. Implemented methods on Renderer9 using the state setting from Context as a reference and new members for storing prevously set state to minimize graphics device calls. Implemented methods on Renderer11 with the UNIMPLEMENTED notice. Signed-off-by: Shannon Woods Signed-off-by: Daniel Koch Author: Geoff Lang git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1421 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 1e34fde5
......@@ -71,6 +71,17 @@ class Renderer
virtual void setSamplerState(gl::SamplerType type, int index, const gl::SamplerState &sampler) = 0;
virtual void setTexture(gl::SamplerType type, int index, gl::Texture *texture) = 0;
virtual void setRasterizerState(const gl::RasterizerState &rasterState, unsigned int depthSize) = 0;
virtual void setBlendState(const gl::BlendState &blendState, const gl::Color &blendColor,
unsigned int sampleMask) = 0;
virtual void setDepthStencilState(const gl::DepthStencilState &depthStencilState, bool frontFaceCCW,
unsigned int stencilSize) = 0;
virtual void setScissorRectangle(const gl::Rectangle& scissor, unsigned int renderTargetWidth,
unsigned int renderTargetHeight) = 0;
virtual void applyRenderTarget(gl::Framebuffer *frameBuffer) = 0;
// lost device
virtual void markDeviceLost() = 0;
virtual bool isDeviceLost() = 0;
......
......@@ -236,6 +236,38 @@ void Renderer11::setTexture(gl::SamplerType type, int index, gl::Texture *textur
UNIMPLEMENTED();
}
void Renderer11::setRasterizerState(const gl::RasterizerState &rasterState, unsigned int depthSize)
{
// TODO
UNIMPLEMENTED();
}
void Renderer11::setBlendState(const gl::BlendState &blendState, const gl::Color &blendColor,
unsigned int sampleMask)
{
// TODO
UNIMPLEMENTED();
}
void Renderer11::setDepthStencilState(const gl::DepthStencilState &depthStencilState, bool frontFaceCCW,
unsigned int stencilSize)
{
// TODO
UNIMPLEMENTED();
}
void Renderer11::setScissorRectangle(const gl::Rectangle& scissor, unsigned int renderTargetWidth,
unsigned int renderTargetHeight)
{
// TODO
UNIMPLEMENTED();
}
void Renderer11::applyRenderTarget(gl::Framebuffer *frameBuffer)
{
// TODO
UNIMPLEMENTED();
}
void Renderer11::releaseDeviceResources()
{
......
......@@ -45,6 +45,17 @@ class Renderer11 : public Renderer
virtual void setSamplerState(gl::SamplerType type, int index, const gl::SamplerState &sampler);
virtual void setTexture(gl::SamplerType type, int index, gl::Texture *texture);
virtual void setRasterizerState(const gl::RasterizerState &rasterState, unsigned int depthSize);
virtual void setBlendState(const gl::BlendState &blendState, const gl::Color &blendColor,
unsigned int sampleMask);
virtual void setDepthStencilState(const gl::DepthStencilState &depthStencilState, bool frontFaceCCW,
unsigned int stencilSize);
virtual void setScissorRectangle(const gl::Rectangle& scissor, unsigned int renderTargetWidth,
unsigned int renderTargetHeight);
virtual void applyRenderTarget(gl::Framebuffer *frameBuffer);
// lost device
virtual void markDeviceLost();
virtual bool isDeviceLost();
......
......@@ -68,6 +68,17 @@ class Renderer9 : public Renderer
virtual void setSamplerState(gl::SamplerType type, int index, const gl::SamplerState &sampler);
virtual void setTexture(gl::SamplerType type, int index, gl::Texture *texture);
virtual void setRasterizerState(const gl::RasterizerState &rasterState, unsigned int depthSize);
virtual void setBlendState(const gl::BlendState &blendState, const gl::Color &blendColor,
unsigned int sampleMask);
virtual void setDepthStencilState(const gl::DepthStencilState &depthStencilState, bool frontFaceCCW,
unsigned int stencilSize);
virtual void setScissorRectangle(const gl::Rectangle& scissor, unsigned int renderTargetWidth,
unsigned int renderTargetHeight);
virtual void applyRenderTarget(gl::Framebuffer *frameBuffer);
// lost device
virtual void markDeviceLost();
virtual bool isDeviceLost();
......@@ -161,6 +172,26 @@ class Renderer9 : public Renderer
std::map<D3DFORMAT, bool *> mMultiSampleSupport;
GLsizei mMaxSupportedSamples;
// previously set render states
bool mForceSetDepthStencilState;
gl::DepthStencilState mCurDepthStencilState;
bool mCurFrontFaceCCW;
unsigned int mCurStencilSize;
bool mForceSetRasterState;
gl::RasterizerState mCurRasterState;
unsigned int mCurDepthSize;
bool mForceSetScissor;
gl::Rectangle mCurScissor;
unsigned int mCurRenderTargetWidth;
unsigned int mCurRenderTargetHeight;
bool mForceSetBlendState;
gl::BlendState mCurBlendState;
gl::Color mCurBlendColor;
GLuint mCurSampleMask;
// A pool of event queries that are currently unused.
std::vector<IDirect3DQuery9*> mEventQueryPool;
VertexShaderCache mVertexShaderCache;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment