- moved the vertex and light data generation back to the render pass for modern OpenGL with persistently mapped buffers.

Having this extra CPU time in there allows for better parallelization with the graphics driver and GPU.
This commit is contained in:
Christoph Oelckers 2018-05-05 23:32:55 +02:00
parent 72c7a05ba8
commit 099057b142
2 changed files with 15 additions and 3 deletions

View file

@ -256,6 +256,15 @@ void FDrawInfo::RenderTranslucentWall(GLWall *wall)
//==========================================================================
void FDrawInfo::DrawWall(GLWall *wall, int pass)
{
if (screen->hwcaps & RFL_BUFFER_STORAGE)
{
if (level.HasDynamicLights && FixedColormap == CM_DEFAULT && wall->gltexture != nullptr && !(screen->hwcaps & RFL_NO_SHADERS))
{
wall->SetupLights(this, lightdata);
}
wall->MakeVertices(this, !!(wall->flags & GLWall::GLWF_TRANSLUCENT));
}
gl_RenderState.SetNormal(wall->glseg.Normal());
switch (pass)
{

View file

@ -183,11 +183,14 @@ void GLWall::PutWall(HWDrawInfo *di, bool translucent)
if (di->FixedColormap != CM_DEFAULT || (Colormap.LightColor.isWhite() && lightlevel == 255))
flags &= ~GLWF_GLOW;
if (level.HasDynamicLights && di->FixedColormap == CM_DEFAULT && gltexture != nullptr && !(screen->hwcaps & RFL_NO_SHADERS))
if (!(screen->hwcaps & RFL_BUFFER_STORAGE))
{
SetupLights(di, lightdata);
if (level.HasDynamicLights && di->FixedColormap == CM_DEFAULT && gltexture != nullptr && !(screen->hwcaps & RFL_NO_SHADERS))
{
SetupLights(di, lightdata);
}
MakeVertices(di, translucent);
}
MakeVertices(di, translucent);
bool solid;