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);
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
glEnable(GL_LINE_SMOOTH);
|
glEnable(GL_LINE_SMOOTH);
|
||||||
glEnable(GL_DEPTH_TEST);
|
glEnable(GL_DEPTH_TEST);
|
||||||
glDepthFunc(GL_LESS);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,6 +59,7 @@ void lovrGraphicsReset() {
|
||||||
lovrGraphicsSetPointSize(1);
|
lovrGraphicsSetPointSize(1);
|
||||||
lovrGraphicsSetCullingEnabled(0);
|
lovrGraphicsSetCullingEnabled(0);
|
||||||
lovrGraphicsSetPolygonWinding(POLYGON_WINDING_COUNTERCLOCKWISE);
|
lovrGraphicsSetPolygonWinding(POLYGON_WINDING_COUNTERCLOCKWISE);
|
||||||
|
lovrGraphicsSetDepthTest(COMPARE_LESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lovrGraphicsClear(int color, int depth) {
|
void lovrGraphicsClear(int color, int depth) {
|
||||||
|
@ -221,6 +222,17 @@ void lovrGraphicsSetPolygonWinding(PolygonWinding winding) {
|
||||||
glFrontFace(winding);
|
glFrontFace(winding);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CompareMode lovrGraphicsGetDepthTest() {
|
||||||
|
return state.depthTest;
|
||||||
|
}
|
||||||
|
|
||||||
|
void lovrGraphicsSetDepthTest(CompareMode depthTest) {
|
||||||
|
if (state.depthTest != depthTest) {
|
||||||
|
state.depthTest = depthTest;
|
||||||
|
glDepthFunc(depthTest);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int lovrGraphicsPush() {
|
int lovrGraphicsPush() {
|
||||||
vec_mat4_t* transforms = &state.transforms;
|
vec_mat4_t* transforms = &state.transforms;
|
||||||
if (transforms->length >= 64) { return 1; }
|
if (transforms->length >= 64) { return 1; }
|
||||||
|
|
|
@ -24,6 +24,15 @@ typedef enum {
|
||||||
POLYGON_WINDING_COUNTERCLOCKWISE = GL_CCW
|
POLYGON_WINDING_COUNTERCLOCKWISE = GL_CCW
|
||||||
} PolygonWinding;
|
} 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 {
|
typedef struct {
|
||||||
Shader* activeShader;
|
Shader* activeShader;
|
||||||
Shader* defaultShader;
|
Shader* defaultShader;
|
||||||
|
@ -43,6 +52,7 @@ typedef struct {
|
||||||
float pointSize;
|
float pointSize;
|
||||||
char isCullingEnabled;
|
char isCullingEnabled;
|
||||||
PolygonWinding polygonWinding;
|
PolygonWinding polygonWinding;
|
||||||
|
CompareMode depthTest;
|
||||||
} GraphicsState;
|
} GraphicsState;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -74,6 +84,8 @@ char lovrGraphicsIsCullingEnabled();
|
||||||
void lovrGraphicsSetCullingEnabled(char isEnabled);
|
void lovrGraphicsSetCullingEnabled(char isEnabled);
|
||||||
PolygonWinding lovrGraphicsGetPolygonWinding();
|
PolygonWinding lovrGraphicsGetPolygonWinding();
|
||||||
void lovrGraphicsSetPolygonWinding(PolygonWinding winding);
|
void lovrGraphicsSetPolygonWinding(PolygonWinding winding);
|
||||||
|
CompareMode lovrGraphicsGetDepthTest();
|
||||||
|
void lovrGraphicsSetDepthTest(CompareMode depthTest);
|
||||||
int lovrGraphicsPush();
|
int lovrGraphicsPush();
|
||||||
int lovrGraphicsPop();
|
int lovrGraphicsPop();
|
||||||
void lovrGraphicsOrigin();
|
void lovrGraphicsOrigin();
|
||||||
|
|
|
@ -62,6 +62,8 @@ const luaL_Reg lovrGraphics[] = {
|
||||||
{ "setCullingEnabled", l_lovrGraphicsSetCullingEnabled },
|
{ "setCullingEnabled", l_lovrGraphicsSetCullingEnabled },
|
||||||
{ "getPolygonWinding", l_lovrGraphicsGetPolygonWinding },
|
{ "getPolygonWinding", l_lovrGraphicsGetPolygonWinding },
|
||||||
{ "setPolygonWinding", l_lovrGraphicsSetPolygonWinding },
|
{ "setPolygonWinding", l_lovrGraphicsSetPolygonWinding },
|
||||||
|
{ "getDepthTest", l_lovrGraphicsGetDepthTest },
|
||||||
|
{ "setDepthTest", l_lovrGraphicsSetDepthTest },
|
||||||
{ "push", l_lovrGraphicsPush },
|
{ "push", l_lovrGraphicsPush },
|
||||||
{ "pop", l_lovrGraphicsPop },
|
{ "pop", l_lovrGraphicsPop },
|
||||||
{ "origin", l_lovrGraphicsOrigin },
|
{ "origin", l_lovrGraphicsOrigin },
|
||||||
|
@ -117,6 +119,14 @@ int l_lovrGraphicsInit(lua_State* L) {
|
||||||
map_set(&PolygonWindings, "clockwise", POLYGON_WINDING_CLOCKWISE);
|
map_set(&PolygonWindings, "clockwise", POLYGON_WINDING_CLOCKWISE);
|
||||||
map_set(&PolygonWindings, "counterclockwise", POLYGON_WINDING_COUNTERCLOCKWISE);
|
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_init(&FilterModes);
|
||||||
map_set(&FilterModes, "nearest", FILTER_NEAREST);
|
map_set(&FilterModes, "nearest", FILTER_NEAREST);
|
||||||
map_set(&FilterModes, "linear", FILTER_LINEAR);
|
map_set(&FilterModes, "linear", FILTER_LINEAR);
|
||||||
|
@ -310,6 +320,17 @@ int l_lovrGraphicsSetPolygonWinding(lua_State* L) {
|
||||||
return 0;
|
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) {
|
int l_lovrGraphicsPush(lua_State* L) {
|
||||||
if (lovrGraphicsPush()) {
|
if (lovrGraphicsPush()) {
|
||||||
return luaL_error(L, "Unbalanced matrix stack (more pushes than pops?)");
|
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 BufferUsages;
|
||||||
map_int_t DrawModes;
|
map_int_t DrawModes;
|
||||||
map_int_t PolygonWindings;
|
map_int_t PolygonWindings;
|
||||||
|
map_int_t CompareModes;
|
||||||
map_int_t FilterModes;
|
map_int_t FilterModes;
|
||||||
map_int_t WrapModes;
|
map_int_t WrapModes;
|
||||||
|
|
||||||
|
@ -35,6 +36,8 @@ int l_lovrGraphicsIsCullingEnabled(lua_State* L);
|
||||||
int l_lovrGraphicsSetCullingEnabled(lua_State* L);
|
int l_lovrGraphicsSetCullingEnabled(lua_State* L);
|
||||||
int l_lovrGraphicsGetPolygonWinding(lua_State* L);
|
int l_lovrGraphicsGetPolygonWinding(lua_State* L);
|
||||||
int l_lovrGraphicsSetPolygonWinding(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_lovrGraphicsPush(lua_State* L);
|
||||||
int l_lovrGraphicsPop(lua_State* L);
|
int l_lovrGraphicsPop(lua_State* L);
|
||||||
int l_lovrGraphicsOrigin(lua_State* L);
|
int l_lovrGraphicsOrigin(lua_State* L);
|
||||||
|
|
Loading…
Reference in New Issue