Allow disabling of depth test;

This commit is contained in:
bjorn 2016-11-24 15:45:59 -08:00
parent 43b7592989
commit 9f4a441bf1
4 changed files with 19 additions and 4 deletions

View File

@ -42,5 +42,4 @@ void initGlfw(GLFWerrorfun onError, GLFWwindowclosefun onClose, void* userPointe
glEnable(GL_BLEND); glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_LINE_SMOOTH); glEnable(GL_LINE_SMOOTH);
glEnable(GL_DEPTH_TEST);
} }

View File

@ -22,6 +22,7 @@ void lovrGraphicsInit() {
glGenVertexArrays(1, &state.shapeArray); glGenVertexArrays(1, &state.shapeArray);
vec_init(&state.shapeData); vec_init(&state.shapeData);
vec_init(&state.shapeIndices); vec_init(&state.shapeIndices);
state.depthTest = -1;
lovrGraphicsReset(); lovrGraphicsReset();
} }
@ -235,6 +236,11 @@ void lovrGraphicsSetDepthTest(CompareMode depthTest) {
if (state.depthTest != depthTest) { if (state.depthTest != depthTest) {
state.depthTest = depthTest; state.depthTest = depthTest;
glDepthFunc(depthTest); glDepthFunc(depthTest);
if (depthTest) {
glEnable(GL_DEPTH_TEST);
} else {
glDisable(GL_DEPTH_TEST);
}
} }
} }

View File

@ -25,6 +25,7 @@ typedef enum {
} PolygonWinding; } PolygonWinding;
typedef enum { typedef enum {
COMPARE_NONE = 0,
COMPARE_EQUAL = GL_EQUAL, COMPARE_EQUAL = GL_EQUAL,
COMPARE_NOT_EQUAL = GL_NOTEQUAL, COMPARE_NOT_EQUAL = GL_NOTEQUAL,
COMPARE_LESS = GL_LESS, COMPARE_LESS = GL_LESS,

View File

@ -327,13 +327,22 @@ int l_lovrGraphicsSetPolygonWinding(lua_State* L) {
} }
int l_lovrGraphicsGetDepthTest(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; return 1;
} }
int l_lovrGraphicsSetDepthTest(lua_State* L) { int l_lovrGraphicsSetDepthTest(lua_State* L) {
if (lua_isnoneornil(L, 1)) {
lovrGraphicsSetDepthTest(COMPARE_NONE);
} else {
CompareMode* depthTest = (CompareMode*) luax_checkenum(L, 1, &CompareModes, "compare mode"); CompareMode* depthTest = (CompareMode*) luax_checkenum(L, 1, &CompareModes, "compare mode");
lovrGraphicsSetDepthTest(*depthTest); lovrGraphicsSetDepthTest(*depthTest);
}
return 0; return 0;
} }