1
0
Fork 0
mirror of https://github.com/bjornbytes/lovr.git synced 2024-07-23 06:03:35 +00:00
lovr/src/graphics/buffer.h

68 lines
2 KiB
C
Raw Normal View History

2016-08-08 01:32:37 +00:00
#include "../glfw.h"
2016-09-30 06:18:51 +00:00
#include "../util.h"
2016-07-16 05:39:17 +00:00
2016-08-10 06:28:17 +00:00
#ifndef LOVR_BUFFER_TYPES
#define LOVR_BUFFER_TYPES
typedef enum {
BUFFER_POINTS = GL_POINTS,
BUFFER_TRIANGLE_STRIP = GL_TRIANGLE_STRIP,
BUFFER_TRIANGLES = GL_TRIANGLES,
BUFFER_TRIANGLE_FAN = GL_TRIANGLE_FAN
} BufferDrawMode;
typedef enum {
BUFFER_STATIC = GL_STATIC_DRAW,
BUFFER_DYNAMIC = GL_DYNAMIC_DRAW,
BUFFER_STREAM = GL_STREAM_DRAW
} BufferUsage;
typedef enum {
BUFFER_FLOAT = GL_FLOAT,
BUFFER_BYTE = GL_BYTE
} BufferAttributeType;
typedef struct {
const char* name;
BufferAttributeType type;
int size;
} BufferAttribute;
typedef vec_t(BufferAttribute) BufferFormat;
2016-07-16 05:39:17 +00:00
typedef struct {
2016-08-08 21:40:18 +00:00
int size;
int stride;
void* data;
void* scratchVertex;
BufferFormat format;
BufferDrawMode drawMode;
BufferUsage usage;
2016-07-27 06:17:55 +00:00
GLuint vao;
GLuint vbo;
2016-09-18 00:52:52 +00:00
GLuint ibo;
vec_uint_t map;
char isRangeEnabled;
2016-08-09 01:27:35 +00:00
int rangeStart;
int rangeCount;
2016-07-16 05:39:17 +00:00
} Buffer;
2016-08-10 06:28:17 +00:00
#endif
2016-07-16 05:39:17 +00:00
Buffer* lovrBufferCreate(int size, BufferFormat* format, BufferDrawMode drawMode, BufferUsage usage);
2016-08-10 06:28:17 +00:00
void lovrBufferDestroy(Buffer* buffer);
void lovrBufferDraw(Buffer* buffer);
BufferFormat lovrBufferGetVertexFormat(Buffer* buffer);
BufferDrawMode lovrBufferGetDrawMode(Buffer* buffer);
int lovrBufferSetDrawMode(Buffer* buffer, BufferDrawMode drawMode);
2016-09-17 23:29:39 +00:00
int lovrBufferGetVertexCount(Buffer* buffer);
int lovrBufferGetVertexSize(Buffer* buffer);
void* lovrBufferGetScratchVertex(Buffer* buffer);
void lovrBufferGetVertex(Buffer* buffer, int index, void* dest);
void lovrBufferSetVertex(Buffer* buffer, int index, void* vertex);
2016-10-31 20:54:32 +00:00
void lovrBufferSetVertices(Buffer* buffer, float* vertices, int count);
2016-09-18 00:52:52 +00:00
unsigned int* lovrBufferGetVertexMap(Buffer* buffer, int* count);
void lovrBufferSetVertexMap(Buffer* buffer, unsigned int* map, int count);
2016-09-20 06:42:21 +00:00
char lovrBufferIsRangeEnabled(Buffer* buffer);
void lovrBufferSetRangeEnabled(Buffer* buffer, char isEnabled);
2016-08-10 06:28:17 +00:00
void lovrBufferGetDrawRange(Buffer* buffer, int* start, int* count);
int lovrBufferSetDrawRange(Buffer* buffer, int start, int count);