Buffer:setVertex;

This commit is contained in:
bjorn 2016-07-16 14:22:11 -07:00
parent eadc31777d
commit 31bd3abf0b
3 changed files with 20 additions and 15 deletions

View File

@ -24,7 +24,22 @@ int lovrBufferDraw(lua_State* L) {
return 0;
}
int lovrBufferSetVertex(lua_State* L) {
Buffer* buffer = luax_checkbuffer(L, 1);
int index = luaL_checkint(L, 2) - 1;
float x = luaL_checknumber(L, 3);
float y = luaL_checknumber(L, 4);
float z = luaL_checknumber(L, 5);
buffer->data[3 * index + 0] = x;
buffer->data[3 * index + 1] = y;
buffer->data[3 * index + 2] = z;
return 0;
}
const luaL_Reg lovrBuffer[] = {
{ "draw", lovrBufferDraw },
{ "setVertex", lovrBufferSetVertex },
{ NULL, NULL }
};

View File

@ -4,13 +4,13 @@
#include "glfw.h"
typedef struct {
GLuint vbo;
GLuint vao;
GLfloat* data;
GLenum drawMode;
} Buffer;
void luax_pushbuffer(lua_State* L, Buffer* buffer);
Buffer* luax_checkbuffer(lua_State* L, int index);
int lovrBufferDraw(lua_State* L);
int lovrBufferSetVertex(lua_State* L);
extern const luaL_Reg lovrBuffer[];

View File

@ -44,21 +44,11 @@ int lovrGraphicsNewModel(lua_State* L) {
}
int lovrGraphicsNewBuffer(lua_State* L) {
int size = luaL_checkint(L, 1);
Buffer* buffer = (Buffer*) malloc(sizeof(Buffer));
buffer->data = (GLfloat*) malloc(9 * sizeof(GLfloat));
buffer->data[0] = -0.5;
buffer->data[1] = -0.5;
buffer->data[2] = 0.0;
buffer->data[3] = 0.5;
buffer->data[4] = -0.5;
buffer->data[5] = 0.0;
buffer->data[6] = 0.0;
buffer->data[7] = 0.5;
buffer->data[8] = 0.0;
buffer->data = (GLfloat*) malloc(size * 3 * sizeof(GLfloat));
luax_pushbuffer(L, buffer);