ext/say_buffer.h in ray-0.1.1 vs ext/say_buffer.h in ray-0.2.0

- old
+ new

@@ -1,37 +1,52 @@ #ifndef SAY_BUFFER_H_ #define SAY_BUFFER_H_ #include "say_basic_type.h" -#include "say_array.h" -#include "say_table.h" #define SAY_STATIC GL_STATIC_DRAW_ARB #define SAY_STREAM GL_STREAM_DRAW_ARB #define SAY_DYNAMIC GL_DYNAMIC_DRAW_ARB typedef struct { size_t vtype; - GLuint vbo; + GLuint vbo, instance_vbo; GLenum type; - say_table *vaos; + mo_hash *vaos; - say_array *buffer; + mo_array buffer, *instance_buffer; } say_buffer; say_buffer *say_buffer_create(size_t vtype, GLenum type, size_t size); void say_buffer_free(say_buffer *buf); +bool say_buffer_has_instance(say_buffer *buf); + void *say_buffer_get_vertex(say_buffer *buf, size_t id); +void *say_buffer_get_instance(say_buffer *buf, size_t id); void say_buffer_bind(say_buffer *buf); +void say_buffer_bind_vbo(say_buffer *buf); +void say_buffer_bind_instance_vbo(say_buffer *buf); + void say_buffer_unbind(); +void say_buffer_unbind_vbo(); void say_buffer_update_part(say_buffer *buf, size_t index, size_t size); void say_buffer_update(say_buffer *buf); size_t say_buffer_get_size(say_buffer *buf); void say_buffer_resize(say_buffer *buf, size_t size); + +void say_buffer_update_instance_part(say_buffer *buf, size_t index, + size_t size); +void say_buffer_update_instance(say_buffer *buf); + +size_t say_buffer_get_instance_size(say_buffer *buf); +void say_buffer_resize_instance(say_buffer *buf, size_t size); + +GLuint say_buffer_get_vbo(say_buffer *buf); +GLuint say_buffer_get_instance_vbo(say_buffer *buf); #endif