mirror of
https://github.com/korenkonder/ReDIVA.git
synced 2026-10-13 09:38:14 +03:00
Moved sprite vertex buffer preparation before draw
This commit is contained in:
@@ -891,6 +891,7 @@ void render_context::disp() {
|
||||
|
||||
void render_context::free() {
|
||||
shadow_buffer.Free();
|
||||
screen_overlay_buffer.Free();
|
||||
screen_buffer.Free();
|
||||
render_buffer.Free();
|
||||
reflect_buffer.Free();
|
||||
@@ -937,6 +938,7 @@ void render_context::init() {
|
||||
init_copy_buffer(shadow_buffer, this->shadow_buffer);
|
||||
|
||||
screen_buffer.Init(sprite_width, sprite_height, 0, GL_RGBA8, 0);
|
||||
screen_overlay_buffer.Init(sprite_width, sprite_height, 0, GL_RGBA8, 0);
|
||||
}
|
||||
|
||||
void render_context::resize(int32_t render_width, int32_t render_height,
|
||||
|
||||
@@ -487,6 +487,7 @@ struct render_context {
|
||||
RenderTexture reflect_buffer;
|
||||
RenderTexture render_buffer;
|
||||
RenderTexture screen_buffer;
|
||||
RenderTexture screen_overlay_buffer;
|
||||
RenderTexture shadow_buffer;
|
||||
|
||||
GL::UniformBuffer camera_blur_ubo;
|
||||
|
||||
@@ -284,6 +284,7 @@ namespace rndr {
|
||||
|
||||
void RenderManager::render_all() {
|
||||
light_param_data_storage_data_set_ibl();
|
||||
sprite_manager_pre_draw();
|
||||
|
||||
static const vec4 color_clear = 0.0f;
|
||||
|
||||
@@ -314,6 +315,8 @@ namespace rndr {
|
||||
gl_state_end_event();
|
||||
|
||||
rctx_ptr->disp_manager->check_vertex_arrays();
|
||||
sprite_manager_post_draw();
|
||||
|
||||
gl_state_bind_vertex_array(0);
|
||||
gl_state_disable_primitive_restart();
|
||||
gl_state_bind_uniform_buffer(0);
|
||||
@@ -1199,7 +1202,7 @@ namespace rndr {
|
||||
gl_state_enable_blend();
|
||||
gl_state_disable_cull_face();
|
||||
sprite_manager_draw(0, true,
|
||||
rend->temp_buffer.color_texture,
|
||||
rctx->screen_overlay_buffer.color_texture,
|
||||
rctx->camera->view_projection_aet_2d);
|
||||
gl_state_enable_cull_face();
|
||||
gl_state_disable_blend();
|
||||
|
||||
+630
-541
File diff suppressed because it is too large
Load Diff
+4
-1
@@ -169,6 +169,7 @@ namespace spr {
|
||||
mat4 mat;
|
||||
const texture* texture;
|
||||
int32_t shader;
|
||||
int32_t sprite_draw_param_index;
|
||||
#if BREAK_SPRITE_VERTEX_LIMIT
|
||||
size_t vertex_array;
|
||||
#else
|
||||
@@ -210,7 +211,7 @@ namespace spr {
|
||||
extern void sprite_manager_init();
|
||||
extern void sprite_manager_add_spr_sets(const sprite_database* spr_db);
|
||||
extern void sprite_manager_clear();
|
||||
extern void sprite_manager_draw(int32_t index, bool font, texture* tex, const mat4& vp);
|
||||
extern void sprite_manager_draw(int32_t index, bool font, texture* overlay_tex, const mat4& vp);
|
||||
extern int32_t sprite_manager_get_index();
|
||||
extern size_t sprite_manager_get_reqlist_count(int32_t index);
|
||||
extern ::spr_set* sprite_manager_get_set(uint32_t set_id, const sprite_database* spr_db);
|
||||
@@ -222,6 +223,8 @@ extern rectangle sprite_manager_get_spr_rectangle(uint32_t spr_id, const sprite_
|
||||
extern texture* sprite_manager_get_spr_texture(uint32_t spr_id, const sprite_database* spr_db);
|
||||
extern bool sprite_manager_load_file(uint32_t set_id, const sprite_database* spr_db);
|
||||
extern bool sprite_manager_load_file_modern(uint32_t set_hash, sprite_database* spr_db);
|
||||
extern void sprite_manager_post_draw();
|
||||
extern void sprite_manager_pre_draw();
|
||||
extern void sprite_manager_read_file(uint32_t set_id,
|
||||
std::string& mdata_dir, void* data, const sprite_database* spr_db);
|
||||
extern void sprite_manager_read_file(uint32_t set_id,
|
||||
|
||||
Reference in New Issue
Block a user