1
0
Fork 0
mirror of https://github.com/bjornbytes/lovr.git synced 2024-07-03 04:53:35 +00:00

Send Transforms to Shaders;

This commit is contained in:
bjorn 2017-02-18 15:18:30 -08:00
parent 706481f9ee
commit 24d928e9a2

View file

@ -1,4 +1,5 @@
#include "lovr/types/shader.h" #include "lovr/types/shader.h"
#include "math/transform.h"
const luaL_Reg lovrShader[] = { const luaL_Reg lovrShader[] = {
{ "send", l_lovrShaderSend }, { "send", l_lovrShaderSend },
@ -141,12 +142,17 @@ int l_lovrShaderSend(lua_State* L) {
break; break;
case GL_FLOAT_MAT4: case GL_FLOAT_MAT4:
if (lua_isuserdata(L, 3)) {
Transform* transform = luax_checktype(L, 3, Transform);
memcpy(data, transform->matrix, 16 * sizeof(float));
} else {
luaL_checktype(L, 3, LUA_TTABLE); luaL_checktype(L, 3, LUA_TTABLE);
for (int i = 0; i < 16; i++) { for (int i = 0; i < 16; i++) {
lua_rawgeti(L, 3, i + 1); lua_rawgeti(L, 3, i + 1);
data[i] = lua_tonumber(L, -1); data[i] = lua_tonumber(L, -1);
lua_pop(L, 1); lua_pop(L, 1);
} }
}
lovrShaderSendFloatMat4(shader, id, data); lovrShaderSendFloatMat4(shader, id, data);
break; break;