mirror of https://github.com/bjornbytes/lovr.git
lovr.graphics.setDepthTest;
This commit is contained in:
parent
00e07c177b
commit
15174b8299
|
@ -43,5 +43,4 @@ void initGlfw(GLFWerrorfun onError, GLFWwindowclosefun onClose, void* userPointe
|
|||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
glEnable(GL_LINE_SMOOTH);
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
glDepthFunc(GL_LESS);
|
||||
}
|
||||
|
|
|
@ -59,6 +59,7 @@ void lovrGraphicsReset() {
|
|||
lovrGraphicsSetPointSize(1);
|
||||
lovrGraphicsSetCullingEnabled(0);
|
||||
lovrGraphicsSetPolygonWinding(POLYGON_WINDING_COUNTERCLOCKWISE);
|
||||
lovrGraphicsSetDepthTest(COMPARE_LESS);
|
||||
}
|
||||
|
||||
void lovrGraphicsClear(int color, int depth) {
|
||||
|
@ -221,6 +222,17 @@ void lovrGraphicsSetPolygonWinding(PolygonWinding winding) {
|
|||
glFrontFace(winding);
|
||||
}
|
||||
|
||||
CompareMode lovrGraphicsGetDepthTest() {
|
||||
return state.depthTest;
|
||||
}
|
||||
|
||||
void lovrGraphicsSetDepthTest(CompareMode depthTest) {
|
||||
if (state.depthTest != depthTest) {
|
||||
state.depthTest = depthTest;
|
||||
glDepthFunc(depthTest);
|
||||
}
|
||||
}
|
||||
|
||||
int lovrGraphicsPush() {
|
||||
vec_mat4_t* transforms = &state.transforms;
|
||||
if (transforms->length >= 64) { return 1; }
|
||||
|
|
|
@ -24,6 +24,15 @@ typedef enum {
|
|||
POLYGON_WINDING_COUNTERCLOCKWISE = GL_CCW
|
||||
} PolygonWinding;
|
||||
|
||||
typedef enum {
|
||||
COMPARE_EQUAL = GL_EQUAL,
|
||||
COMPARE_NOT_EQUAL = GL_NOTEQUAL,
|
||||
COMPARE_LESS = GL_LESS,
|
||||
COMPARE_LEQUAL = GL_LEQUAL,
|
||||
COMPARE_GEQUAL = GL_GEQUAL,
|
||||
COMPARE_GREATER = GL_GREATER
|
||||
} CompareMode;
|
||||
|
||||
typedef struct {
|
||||
Shader* activeShader;
|
||||
Shader* defaultShader;
|
||||
|
@ -43,6 +52,7 @@ typedef struct {
|
|||
float pointSize;
|
||||
char isCullingEnabled;
|
||||
PolygonWinding polygonWinding;
|
||||
CompareMode depthTest;
|
||||
} GraphicsState;
|
||||
#endif
|
||||
|
||||
|
@ -74,6 +84,8 @@ char lovrGraphicsIsCullingEnabled();
|
|||
void lovrGraphicsSetCullingEnabled(char isEnabled);
|
||||
PolygonWinding lovrGraphicsGetPolygonWinding();
|
||||
void lovrGraphicsSetPolygonWinding(PolygonWinding winding);
|
||||
CompareMode lovrGraphicsGetDepthTest();
|
||||
void lovrGraphicsSetDepthTest(CompareMode depthTest);
|
||||
int lovrGraphicsPush();
|
||||
int lovrGraphicsPop();
|
||||
void lovrGraphicsOrigin();
|
||||
|
|
|
@ -62,6 +62,8 @@ const luaL_Reg lovrGraphics[] = {
|
|||
{ "setCullingEnabled", l_lovrGraphicsSetCullingEnabled },
|
||||
{ "getPolygonWinding", l_lovrGraphicsGetPolygonWinding },
|
||||
{ "setPolygonWinding", l_lovrGraphicsSetPolygonWinding },
|
||||
{ "getDepthTest", l_lovrGraphicsGetDepthTest },
|
||||
{ "setDepthTest", l_lovrGraphicsSetDepthTest },
|
||||
{ "push", l_lovrGraphicsPush },
|
||||
{ "pop", l_lovrGraphicsPop },
|
||||
{ "origin", l_lovrGraphicsOrigin },
|
||||
|
@ -117,6 +119,14 @@ int l_lovrGraphicsInit(lua_State* L) {
|
|||
map_set(&PolygonWindings, "clockwise", POLYGON_WINDING_CLOCKWISE);
|
||||
map_set(&PolygonWindings, "counterclockwise", POLYGON_WINDING_COUNTERCLOCKWISE);
|
||||
|
||||
map_init(&CompareModes);
|
||||
map_set(&CompareModes, "equal", COMPARE_EQUAL);
|
||||
map_set(&CompareModes, "notequal", COMPARE_NOT_EQUAL);
|
||||
map_set(&CompareModes, "less", COMPARE_LESS);
|
||||
map_set(&CompareModes, "lequal", COMPARE_LEQUAL);
|
||||
map_set(&CompareModes, "gequal", COMPARE_GEQUAL);
|
||||
map_set(&CompareModes, "greater", COMPARE_GREATER);
|
||||
|
||||
map_init(&FilterModes);
|
||||
map_set(&FilterModes, "nearest", FILTER_NEAREST);
|
||||
map_set(&FilterModes, "linear", FILTER_LINEAR);
|
||||
|
@ -310,6 +320,17 @@ int l_lovrGraphicsSetPolygonWinding(lua_State* L) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
int l_lovrGraphicsGetDepthTest(lua_State* L) {
|
||||
lua_pushstring(L, map_int_find(&CompareModes, lovrGraphicsGetDepthTest()));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int l_lovrGraphicsSetDepthTest(lua_State* L) {
|
||||
CompareMode* depthTest = (CompareMode*) luax_checkenum(L, 1, &CompareModes, "compare mode");
|
||||
lovrGraphicsSetDepthTest(*depthTest);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int l_lovrGraphicsPush(lua_State* L) {
|
||||
if (lovrGraphicsPush()) {
|
||||
return luaL_error(L, "Unbalanced matrix stack (more pushes than pops?)");
|
||||
|
|
|
@ -8,6 +8,7 @@ map_int_t BufferDrawModes;
|
|||
map_int_t BufferUsages;
|
||||
map_int_t DrawModes;
|
||||
map_int_t PolygonWindings;
|
||||
map_int_t CompareModes;
|
||||
map_int_t FilterModes;
|
||||
map_int_t WrapModes;
|
||||
|
||||
|
@ -35,6 +36,8 @@ int l_lovrGraphicsIsCullingEnabled(lua_State* L);
|
|||
int l_lovrGraphicsSetCullingEnabled(lua_State* L);
|
||||
int l_lovrGraphicsGetPolygonWinding(lua_State* L);
|
||||
int l_lovrGraphicsSetPolygonWinding(lua_State* L);
|
||||
int l_lovrGraphicsGetDepthTest(lua_State* L);
|
||||
int l_lovrGraphicsSetDepthTest(lua_State* L);
|
||||
int l_lovrGraphicsPush(lua_State* L);
|
||||
int l_lovrGraphicsPop(lua_State* L);
|
||||
int l_lovrGraphicsOrigin(lua_State* L);
|
||||
|
|
Loading…
Reference in New Issue