From 9f4a441bf16fa5bc79bdf33f9e2194b3fe11a09c Mon Sep 17 00:00:00 2001 From: bjorn Date: Thu, 24 Nov 2016 15:45:59 -0800 Subject: [PATCH] Allow disabling of depth test; --- src/glfw.c | 1 - src/graphics/graphics.c | 6 ++++++ src/graphics/graphics.h | 1 + src/lovr/graphics.c | 15 ++++++++++++--- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/glfw.c b/src/glfw.c index 4f7c2a08..5b6a7375 100644 --- a/src/glfw.c +++ b/src/glfw.c @@ -42,5 +42,4 @@ void initGlfw(GLFWerrorfun onError, GLFWwindowclosefun onClose, void* userPointe glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_LINE_SMOOTH); - glEnable(GL_DEPTH_TEST); } diff --git a/src/graphics/graphics.c b/src/graphics/graphics.c index 3c273912..989c60ba 100644 --- a/src/graphics/graphics.c +++ b/src/graphics/graphics.c @@ -22,6 +22,7 @@ void lovrGraphicsInit() { glGenVertexArrays(1, &state.shapeArray); vec_init(&state.shapeData); vec_init(&state.shapeIndices); + state.depthTest = -1; lovrGraphicsReset(); } @@ -235,6 +236,11 @@ void lovrGraphicsSetDepthTest(CompareMode depthTest) { if (state.depthTest != depthTest) { state.depthTest = depthTest; glDepthFunc(depthTest); + if (depthTest) { + glEnable(GL_DEPTH_TEST); + } else { + glDisable(GL_DEPTH_TEST); + } } } diff --git a/src/graphics/graphics.h b/src/graphics/graphics.h index 4fe42e26..0b5a0629 100644 --- a/src/graphics/graphics.h +++ b/src/graphics/graphics.h @@ -25,6 +25,7 @@ typedef enum { } PolygonWinding; typedef enum { + COMPARE_NONE = 0, COMPARE_EQUAL = GL_EQUAL, COMPARE_NOT_EQUAL = GL_NOTEQUAL, COMPARE_LESS = GL_LESS, diff --git a/src/lovr/graphics.c b/src/lovr/graphics.c index 71e97ab6..07ea230e 100644 --- a/src/lovr/graphics.c +++ b/src/lovr/graphics.c @@ -327,13 +327,22 @@ int l_lovrGraphicsSetPolygonWinding(lua_State* L) { } int l_lovrGraphicsGetDepthTest(lua_State* L) { - lua_pushstring(L, map_int_find(&CompareModes, lovrGraphicsGetDepthTest())); + CompareMode depthTest = lovrGraphicsGetDepthTest(); + if (depthTest) { + lua_pushstring(L, map_int_find(&CompareModes, depthTest)); + } else { + lua_pushnil(L); + } return 1; } int l_lovrGraphicsSetDepthTest(lua_State* L) { - CompareMode* depthTest = (CompareMode*) luax_checkenum(L, 1, &CompareModes, "compare mode"); - lovrGraphicsSetDepthTest(*depthTest); + if (lua_isnoneornil(L, 1)) { + lovrGraphicsSetDepthTest(COMPARE_NONE); + } else { + CompareMode* depthTest = (CompareMode*) luax_checkenum(L, 1, &CompareModes, "compare mode"); + lovrGraphicsSetDepthTest(*depthTest); + } return 0; }