Browse Source

OpenGL: Fix missing 'keep' and 'zero' stencil action implementations.

Fixes #1818
Alex Szpakowski 3 years ago
parent
commit
258d2334af
1 changed files with 10 additions and 2 deletions
  1. 10 2
      src/modules/graphics/opengl/Graphics.cpp

+ 10 - 2
src/modules/graphics/opengl/Graphics.cpp

@@ -1414,12 +1414,17 @@ void Graphics::setStencilMode(StencilAction action, CompareMode compare, int val
 	if (enablestencil != gl.isStateEnabled(OpenGL::ENABLE_STENCIL_TEST))
 	if (enablestencil != gl.isStateEnabled(OpenGL::ENABLE_STENCIL_TEST))
 		gl.setEnableState(OpenGL::ENABLE_STENCIL_TEST, enablestencil);
 		gl.setEnableState(OpenGL::ENABLE_STENCIL_TEST, enablestencil);
 
 
-	GLenum glaction = GL_REPLACE;
+	GLenum glaction = GL_KEEP;
 
 
 	switch (action)
 	switch (action)
 	{
 	{
+	case STENCIL_KEEP:
+		glaction = GL_KEEP;
+		break;
+	case STENCIL_ZERO:
+		glaction = GL_ZERO;
+		break;
 	case STENCIL_REPLACE:
 	case STENCIL_REPLACE:
-	default:
 		glaction = GL_REPLACE;
 		glaction = GL_REPLACE;
 		break;
 		break;
 	case STENCIL_INCREMENT:
 	case STENCIL_INCREMENT:
@@ -1437,6 +1442,9 @@ void Graphics::setStencilMode(StencilAction action, CompareMode compare, int val
 	case STENCIL_INVERT:
 	case STENCIL_INVERT:
 		glaction = GL_INVERT;
 		glaction = GL_INVERT;
 		break;
 		break;
+	case STENCIL_MAX_ENUM:
+		glaction = GL_KEEP;
+		break;
 	}
 	}
 
 
 	/**
 	/**