Buffer:getTexture; Buffer:setTexture;

This commit is contained in:
bjorn 2016-11-08 03:14:50 -08:00
parent 136d6b1da7
commit 17601e237b
4 changed files with 35 additions and 0 deletions

View File

@ -38,6 +38,7 @@ Buffer* lovrBufferCreate(int size, BufferFormat* format, BufferDrawMode drawMode
buffer->isRangeEnabled = 0;
buffer->rangeStart = 0;
buffer->rangeCount = buffer->size;
buffer->texture = NULL;
glGenBuffers(1, &buffer->vbo);
glBindBuffer(GL_ARRAY_BUFFER, buffer->vbo);
@ -66,6 +67,10 @@ void lovrBufferDraw(Buffer* buffer) {
glEnableVertexAttribArray(i);
}
if (buffer->texture) {
glBindTexture(GL_TEXTURE_2D, buffer->texture->id);
}
int start, count;
if (buffer->isRangeEnabled) {
start = buffer->rangeStart;
@ -192,3 +197,11 @@ int lovrBufferSetDrawRange(Buffer* buffer, int rangeStart, int rangeCount) {
return 0;
}
Texture* lovrBufferGetTexture(Buffer* buffer) {
return buffer->texture;
}
void lovrBufferSetTexture(Buffer* buffer, Texture* texture) {
buffer->texture = texture;
}

View File

@ -1,5 +1,6 @@
#include "../glfw.h"
#include "../util.h"
#include "texture.h"
#ifndef LOVR_BUFFER_TYPES
#define LOVR_BUFFER_TYPES
@ -44,6 +45,7 @@ typedef struct {
char isRangeEnabled;
int rangeStart;
int rangeCount;
Texture* texture;
} Buffer;
#endif
@ -65,3 +67,5 @@ char lovrBufferIsRangeEnabled(Buffer* buffer);
void lovrBufferSetRangeEnabled(Buffer* buffer, char isEnabled);
void lovrBufferGetDrawRange(Buffer* buffer, int* start, int* count);
int lovrBufferSetDrawRange(Buffer* buffer, int start, int count);
Texture* lovrBufferGetTexture(Buffer* buffer);
void lovrBufferSetTexture(Buffer* buffer, Texture* texture);

View File

@ -1,4 +1,5 @@
#include "buffer.h"
#include "texture.h"
#include "../graphics.h"
void luax_pushbuffer(lua_State* L, Buffer* buffer) {
@ -87,6 +88,8 @@ const luaL_Reg lovrBuffer[] = {
{ "setDrawMode", l_lovrBufferSetDrawMode },
{ "getDrawRange", l_lovrBufferGetDrawRange },
{ "setDrawRange", l_lovrBufferSetDrawRange },
{ "getTexture", l_lovrBufferGetTexture },
{ "setTexture", l_lovrBufferSetTexture },
{ NULL, NULL }
};
@ -291,3 +294,16 @@ int l_lovrBufferSetDrawRange(lua_State* L) {
return 0;
}
int l_lovrBufferGetTexture(lua_State* L) {
Buffer* buffer = luax_checkbuffer(L, 1);
luax_pushtexture(L, lovrBufferGetTexture(buffer));
return 1;
}
int l_lovrBufferSetTexture(lua_State* L) {
Buffer* buffer = luax_checkbuffer(L, 1);
Texture* texture = luax_checktexture(L, 2);
lovrBufferSetTexture(buffer, texture);
return 0;
}

View File

@ -20,3 +20,5 @@ int l_lovrBufferGetDrawMode(lua_State* L);
int l_lovrBufferSetDrawMode(lua_State* L);
int l_lovrBufferGetDrawRange(lua_State* L);
int l_lovrBufferSetDrawRange(lua_State* L);
int l_lovrBufferGetTexture(lua_State* L);
int l_lovrBufferSetTexture(lua_State* L);