Expose stencil buffer to render code.

The intention is to provide a layer for tracking shadow
rendering, so a single bit is sufficient for now.
This commit is contained in:
Paul Chote
2013-03-03 22:03:04 +13:00
parent 1b34c7d6b9
commit f6264eeba4
4 changed files with 37 additions and 0 deletions

View File

@@ -49,6 +49,7 @@ namespace OpenRA.Renderer.SdlCommon
Sdl.SDL_GL_SetAttribute( Sdl.SDL_GL_GREEN_SIZE, 8 );
Sdl.SDL_GL_SetAttribute( Sdl.SDL_GL_BLUE_SIZE, 8 );
Sdl.SDL_GL_SetAttribute( Sdl.SDL_GL_ALPHA_SIZE, 0 );
Sdl.SDL_GL_SetAttribute( Sdl.SDL_GL_STENCIL_SIZE, 1 );
int windowFlags = 0;
switch (window)
@@ -133,6 +134,24 @@ namespace OpenRA.Renderer.SdlCommon
ErrorHandler.CheckGlError();
}
public void EnableStencilBuffer()
{
Gl.glClear(Gl.GL_STENCIL_BUFFER_BIT);
ErrorHandler.CheckGlError();
Gl.glEnable(Gl.GL_STENCIL_TEST);
ErrorHandler.CheckGlError();
Gl.glStencilFunc(Gl.GL_NOTEQUAL, 1, 1);
ErrorHandler.CheckGlError();
Gl.glStencilOp(Gl.GL_KEEP, Gl.GL_KEEP, Gl.GL_INCR);
ErrorHandler.CheckGlError();
}
public void DisableStencilBuffer()
{
Gl.glDisable(Gl.GL_STENCIL_TEST);
ErrorHandler.CheckGlError();
}
public void EnableDepthBuffer()
{
Gl.glClear(Gl.GL_DEPTH_BUFFER_BIT);