gfx/3d: reduce amount of flushes

This commit is contained in:
Marcin Kurczewski 2025-01-21 13:44:40 +01:00
parent e2181347e8
commit 26f1ef6ea1
2 changed files with 8 additions and 3 deletions

View file

@ -33,7 +33,7 @@
- fixed sprite pickups not being paused in the pause/inventory screen (#2319, regression from 0.6)
- fixed Skidoo snow wake effects at slow speeds (#2324, regression from 0.6)
- fixed software renderer skybox occlusion issues (#2343, regression from 0.7)
- fixed Floating Islands losing some frames if played first (#2325, regression from 0.7)
- improved rendering to achieve a slight performance boost in big rooms (#2325)
## [0.8](https://github.com/LostArtefacts/TRX/compare/tr2-0.8...tr2-0.8) - 2025-01-01
- completed decompilation efforts  TR2X.dll is gone, Tomb2.exe no longer needed (#1694)

View file

@ -31,6 +31,7 @@ typedef struct {
GFX_2D_SURFACE *surface_tex[GFX_MAX_TEXTURES];
int32_t texture_map[GFX_MAX_TEXTURES];
int32_t env_map_texture;
int32_t current_texture;
} M_PRIV;
static VERTEX_INFO m_VBuffer[32] = {};
@ -238,11 +239,13 @@ static void M_SelectTexture(RENDERER *const renderer, const int32_t tex_source)
return;
}
if (tex_source == -1) {
priv->current_texture = tex_source;
GFX_3D_Renderer_SetTexturingEnabled(priv->renderer_3d, false);
} else {
} else if (tex_source != priv->current_texture) {
priv->current_texture = tex_source;
GFX_3D_Renderer_SetTexturingEnabled(priv->renderer_3d, true);
GFX_3D_Renderer_SelectTexture(
priv->renderer_3d, priv->texture_map[tex_source]);
GFX_3D_Renderer_SetTexturingEnabled(priv->renderer_3d, true);
}
}
@ -1420,6 +1423,7 @@ static void M_Init(RENDERER *const renderer)
M_PRIV *const priv = Memory_Alloc(sizeof(M_PRIV));
priv->renderer_2d = GFX_2D_Renderer_Create();
priv->renderer_3d = GFX_3D_Renderer_Create();
priv->current_texture = -1;
for (int32_t i = 0; i < GFX_MAX_TEXTURES; i++) {
priv->texture_map[i] = GFX_NO_TEXTURE;
@ -1503,6 +1507,7 @@ static void M_Close(RENDERER *const renderer)
static void M_BeginScene(RENDERER *const renderer)
{
M_PRIV *const priv = renderer->priv;
priv->current_texture = -1;
ASSERT(renderer->initialized && renderer->open);
M_EnableZBuffer(renderer, true, true);
GFX_3D_Renderer_RenderBegin(priv->renderer_3d);