lovr.graphics.reset;

This commit is contained in:
bjorn 2016-09-27 20:20:08 -07:00
parent e4ecf2452f
commit ad0e014c5a
5 changed files with 33 additions and 12 deletions

View File

@ -16,18 +16,10 @@ static GraphicsState state;
void lovrGraphicsInit() {
vec_init(&state.transforms);
vec_push(&state.transforms, mat4_init());
state.projection = mat4_init();
state.lastTransform = mat4_init();
state.lastProjection = mat4_init();
memset(state.lastTransform, 0, 16);
memset(state.lastProjection, 0, 16);
// TODO customize via lovr.conf
lovrGraphicsSetProjection(.1f, 100.f, 67 * M_PI / 180);
char vertexShaderSource[128];
snprintf(vertexShaderSource, sizeof(vertexShaderSource), "%s",
"void main() { \n"
@ -43,6 +35,27 @@ void lovrGraphicsInit() {
);
state.defaultShader = lovrGraphicsNewShader(vertexShaderSource, fragmentShaderSource);
lovrGraphicsReset();
}
void lovrGraphicsReset() {
int i;
mat4 matrix;
vec_foreach(&state.transforms, matrix, i) {
mat4_deinit(matrix);
}
vec_clear(&state.transforms);
vec_push(&state.transforms, mat4_init());
memset(state.lastTransform, 0, 16);
memset(state.lastProjection, 0, 16);
// TODO customize via lovr.conf
lovrGraphicsSetProjection(.1f, 100.f, 67 * M_PI / 180);
lovrGraphicsSetShader(state.defaultShader);
}

View File

@ -18,6 +18,7 @@ typedef struct {
#endif
void lovrGraphicsInit();
void lovrGraphicsReset();
void lovrGraphicsClear(int color, int depth);
void lovrGraphicsPresent();
void lovrGraphicsPrepare();

View File

@ -6,6 +6,7 @@
#include "../util.h"
const luaL_Reg lovrGraphics[] = {
{ "reset", l_lovrGraphicsReset },
{ "clear", l_lovrGraphicsClear },
{ "present", l_lovrGraphicsPresent },
{ "getClearColor", l_lovrGraphicsGetClearColor },
@ -47,6 +48,11 @@ int l_lovrGraphicsInit(lua_State* L) {
return 1;
}
int l_lovrGraphicsReset(lua_State* L) {
lovrGraphicsReset();
return 0;
}
int l_lovrGraphicsClear(lua_State* L) {
int color = lua_gettop(L) < 1 || lua_toboolean(L, 1);
int depth = lua_gettop(L) < 2 || lua_toboolean(L, 2);

View File

@ -8,6 +8,7 @@ map_int_t BufferUsages;
extern const luaL_Reg lovrGraphics[];
int l_lovrGraphicsInit(lua_State* L);
int l_lovrGraphicsReset(lua_State* L);
int l_lovrGraphicsClear(lua_State* L);
int l_lovrGraphicsPresent(lua_State* L);
int l_lovrGraphicsGetClearColor(lua_State* L);

View File

@ -15,6 +15,10 @@ mat4 mat4_init() {
return mat4_setIdentity(matrix);
}
void mat4_deinit(mat4 matrix) {
free(matrix);
}
mat4 mat4_copy(mat4 source) {
mat4 matrix = mat4_init();
memcpy(matrix, source, 16 * sizeof(float));
@ -61,10 +65,6 @@ mat4 mat4_fromMat44(mat4 matrix, float (*source)[4]) {
return matrix;
}
void mat4_deinit(mat4 matrix) {
free(matrix);
}
mat4 mat4_setIdentity(mat4 matrix) {
memset(matrix, 0, 16 * sizeof(float));
matrix[0] = matrix[5] = matrix[10] = matrix[15] = 1.f;