Moved sprite vertex buffer preparation before draw

This commit is contained in:
korenkonder
2025-04-22 21:52:02 +03:00
parent dd600c4840
commit e38311b226
5 changed files with 641 additions and 543 deletions
+2
View File
@@ -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,
+1
View File
@@ -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;
+4 -1
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
+4 -1
View File
@@ -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,