More graphics transform functions;

lovr.graphics.translate
lovr.graphics.rotate
lovr.graphics.scale
This commit is contained in:
bjorn 2016-09-22 21:53:17 -07:00
parent 0786b67f0b
commit 9f254fc783
4 changed files with 46 additions and 0 deletions

View File

@ -82,6 +82,18 @@ void lovrGraphicsOrigin() {
mat4_setIdentity(vec_last(transforms));
}
void lovrGraphicsTranslate(float x, float y, float z) {
mat4_translate(vec_last(&graphicsState.transforms), x, y, z);
}
void lovrGraphicsRotate(float w, float x, float y, float z) {
mat4_rotate(vec_last(&graphicsState.transforms), w, x, y, z);
}
void lovrGraphicsScale(float x, float y, float z) {
mat4_scale(vec_last(&graphicsState.transforms), x, y, z);
}
Buffer* lovrGraphicsNewBuffer(int size, BufferDrawMode drawMode, BufferUsage usage) {
Buffer* buffer = malloc(sizeof(Buffer));

View File

@ -18,6 +18,9 @@ void lovrGraphicsSetShader(Shader* shader);
int lovrGraphicsPush();
int lovrGraphicsPop();
void lovrGraphicsOrigin();
void lovrGraphicsTranslate(float x, float y, float z);
void lovrGraphicsRotate(float w, float x, float y, float z);
void lovrGraphicsScale(float x, float y, float z);
Buffer* lovrGraphicsNewBuffer(int size, BufferDrawMode drawMode, BufferUsage usage);
Model* lovrGraphicsNewModel(const char* path);
Shader* lovrGraphicsNewShader(const char* vertexSource, const char* fragmentSource);

View File

@ -14,6 +14,9 @@ const luaL_Reg lovrGraphics[] = {
{ "push", l_lovrGraphicsPush },
{ "pop", l_lovrGraphicsPop },
{ "origin", l_lovrGraphicsOrigin },
{ "translate", l_lovrGraphicsTranslate },
{ "rotate", l_lovrGraphicsRotate },
{ "scale", l_lovrGraphicsScale },
{ "newModel", l_lovrGraphicsNewModel },
{ "newBuffer", l_lovrGraphicsNewBuffer },
{ "newShader", l_lovrGraphicsNewShader },
@ -108,6 +111,31 @@ int l_lovrGraphicsOrigin(lua_State* L) {
return 0;
}
int l_lovrGraphicsTranslate(lua_State* L) {
float x = luaL_checknumber(L, 1);
float y = luaL_checknumber(L, 2);
float z = luaL_checknumber(L, 3);
lovrGraphicsTranslate(x, y, z);
return 0;
}
int l_lovrGraphicsRotate(lua_State* L) {
float w = luaL_checknumber(L, 1);
float x = luaL_checknumber(L, 2);
float y = luaL_checknumber(L, 3);
float z = luaL_checknumber(L, 4);
lovrGraphicsRotate(w, x, y, z);
return 0;
}
int l_lovrGraphicsScale(lua_State* L) {
float x = luaL_checknumber(L, 1);
float y = luaL_checknumber(L, 2);
float z = luaL_checknumber(L, 3);
lovrGraphicsScale(x, y, z);
return 0;
}
int l_lovrGraphicsNewBuffer(lua_State* L) {
const char* userDrawMode = luaL_optstring(L, 2, "fan");
BufferDrawMode* drawMode = (BufferDrawMode*) map_get(&BufferDrawModes, userDrawMode);

View File

@ -17,6 +17,9 @@ int l_lovrGraphicsSetShader(lua_State* L);
int l_lovrGraphicsPush(lua_State* L);
int l_lovrGraphicsPop(lua_State* L);
int l_lovrGraphicsOrigin(lua_State* L);
int l_lovrGraphicsTranslate(lua_State* L);
int l_lovrGraphicsRotate(lua_State* L);
int l_lovrGraphicsScale(lua_State* L);
int l_lovrGraphicsNewBuffer(lua_State* L);
int l_lovrGraphicsNewModel(lua_State* L);
int l_lovrGraphicsNewShader(lua_State* L);