mirror of https://github.com/bjornbytes/lovr.git
Buffer:getTexture; Buffer:setTexture;
This commit is contained in:
parent
136d6b1da7
commit
17601e237b
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue