lovr.graphics.setWireframe;

This commit is contained in:
bjorn 2016-11-22 21:07:33 -08:00
parent 15174b8299
commit f18ee761cd
4 changed files with 40 additions and 10 deletions

View File

@ -60,6 +60,7 @@ void lovrGraphicsReset() {
lovrGraphicsSetCullingEnabled(0);
lovrGraphicsSetPolygonWinding(POLYGON_WINDING_COUNTERCLOCKWISE);
lovrGraphicsSetDepthTest(COMPARE_LESS);
lovrGraphicsSetWireframe(0);
}
void lovrGraphicsClear(int color, int depth) {
@ -122,11 +123,11 @@ void lovrGraphicsSetColorMask(char r, char g, char b, char a) {
glColorMask(r, g, b, a);
}
char lovrGraphicsIsScissorEnabled() {
int lovrGraphicsIsScissorEnabled() {
return state.isScissorEnabled;
}
void lovrGraphicsSetScissorEnabled(char isEnabled) {
void lovrGraphicsSetScissorEnabled(int isEnabled) {
state.isScissorEnabled = isEnabled;
if (isEnabled) {
glEnable(GL_SCISSOR_TEST);
@ -200,11 +201,11 @@ void lovrGraphicsSetPointSize(float size) {
glPointSize(size);
}
char lovrGraphicsIsCullingEnabled() {
int lovrGraphicsIsCullingEnabled() {
return state.isCullingEnabled;
}
void lovrGraphicsSetCullingEnabled(char isEnabled) {
void lovrGraphicsSetCullingEnabled(int isEnabled) {
state.isCullingEnabled = isEnabled;
if (isEnabled) {
glEnable(GL_CULL_FACE);
@ -233,6 +234,17 @@ void lovrGraphicsSetDepthTest(CompareMode depthTest) {
}
}
int lovrGraphicsIsWireframe() {
return state.isWireframe;
}
void lovrGraphicsSetWireframe(int wireframe) {
if (state.isWireframe != wireframe) {
state.isWireframe = wireframe;
glPolygonMode(GL_FRONT_AND_BACK, wireframe ? GL_LINE : GL_FILL);
}
}
int lovrGraphicsPush() {
vec_mat4_t* transforms = &state.transforms;
if (transforms->length >= 64) { return 1; }

View File

@ -41,7 +41,7 @@ typedef struct {
mat4 projection;
unsigned int color;
char colorMask;
char isScissorEnabled;
int isScissorEnabled;
ScissorRectangle scissor;
GLuint shapeArray;
GLuint shapeBuffer;
@ -50,10 +50,12 @@ typedef struct {
vec_uint_t shapeIndices;
float lineWidth;
float pointSize;
char isCullingEnabled;
int isCullingEnabled;
PolygonWinding polygonWinding;
CompareMode depthTest;
int isWireframe;
} GraphicsState;
#endif
void lovrGraphicsInit();
@ -68,8 +70,8 @@ void lovrGraphicsGetColor(unsigned char* r, unsigned char* g, unsigned char* b,
void lovrGraphicsSetColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a);
void lovrGraphicsGetColorMask(char* r, char* g, char* b, char* a);
void lovrGraphicsSetColorMask(char r, char g, char b, char a);
char lovrGraphicsIsScissorEnabled();
void lovrGraphicsSetScissorEnabled(char isEnabled);
int lovrGraphicsIsScissorEnabled();
void lovrGraphicsSetScissorEnabled(int isEnabled);
void lovrGraphicsGetScissor(int* x, int* y, int* width, int* height);
void lovrGraphicsSetScissor(int x, int y, int width, int height);
Shader* lovrGraphicsGetShader();
@ -80,12 +82,14 @@ float lovrGraphicsGetLineWidth();
void lovrGraphicsSetLineWidth(float width);
float lovrGraphicsGetPointSize();
void lovrGraphicsSetPointSize(float size);
char lovrGraphicsIsCullingEnabled();
void lovrGraphicsSetCullingEnabled(char isEnabled);
int lovrGraphicsIsCullingEnabled();
void lovrGraphicsSetCullingEnabled(int isEnabled);
PolygonWinding lovrGraphicsGetPolygonWinding();
void lovrGraphicsSetPolygonWinding(PolygonWinding winding);
CompareMode lovrGraphicsGetDepthTest();
void lovrGraphicsSetDepthTest(CompareMode depthTest);
int lovrGraphicsIsWireframe();
void lovrGraphicsSetWireframe(int wireframe);
int lovrGraphicsPush();
int lovrGraphicsPop();
void lovrGraphicsOrigin();

View File

@ -64,6 +64,8 @@ const luaL_Reg lovrGraphics[] = {
{ "setPolygonWinding", l_lovrGraphicsSetPolygonWinding },
{ "getDepthTest", l_lovrGraphicsGetDepthTest },
{ "setDepthTest", l_lovrGraphicsSetDepthTest },
{ "isWireframe", l_lovrGraphicsIsWireframe },
{ "setWireframe", l_lovrGraphicsSetWireframe },
{ "push", l_lovrGraphicsPush },
{ "pop", l_lovrGraphicsPop },
{ "origin", l_lovrGraphicsOrigin },
@ -331,6 +333,16 @@ int l_lovrGraphicsSetDepthTest(lua_State* L) {
return 0;
}
int l_lovrGraphicsIsWireframe(lua_State* L) {
lua_pushboolean(L, lovrGraphicsIsWireframe());
return 1;
}
int l_lovrGraphicsSetWireframe(lua_State* L) {
lovrGraphicsSetWireframe(lua_toboolean(L, 1));
return 0;
}
int l_lovrGraphicsPush(lua_State* L) {
if (lovrGraphicsPush()) {
return luaL_error(L, "Unbalanced matrix stack (more pushes than pops?)");

View File

@ -38,6 +38,8 @@ 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_lovrGraphicsIsWireframe(lua_State* L);
int l_lovrGraphicsSetWireframe(lua_State* L);
int l_lovrGraphicsPush(lua_State* L);
int l_lovrGraphicsPop(lua_State* L);
int l_lovrGraphicsOrigin(lua_State* L);