- weapon drawing code refactor complete.

Setup and drawing are now done separately, this also no longer needs the Quad drawer.
This commit is contained in:
Christoph Oelckers 2018-05-04 23:11:37 +02:00
commit 52d73eabbf
10 changed files with 195 additions and 191 deletions

View file

@ -261,6 +261,8 @@ void GLSceneDrawer::CreateScene()
gl_drawinfo->mShadowMap = &GLRenderer->mShadowMap;
RenderBSPNode (level.HeadNode());
gl_drawinfo->PreparePlayerSprites(r_viewpoint.sector, in_area);
// Process all the sprites on the current portal's back side which touch the portal.
if (GLRenderer->mCurrentPortal != NULL) GLRenderer->mCurrentPortal->RenderAttached();
Bsp.Unclock();
@ -272,7 +274,6 @@ void GLSceneDrawer::CreateScene()
gl_drawinfo->HandleMissingTextures(in_area); // Missing upper/lower textures
gl_drawinfo->HandleHackedSubsectors(); // open sector hacks for deep water
gl_drawinfo->ProcessSectorStacks(in_area); // merge visplanes of sector stacks
SetupWeaponLight();
GLRenderer->mLights->Finish();
GLRenderer->mVBO->Unmap();
@ -508,15 +509,13 @@ void GLSceneDrawer::EndDrawScene(sector_t * viewsector)
{
gl_RenderState.EnableFog(false);
// [BB] HUD models need to be rendered here. Make sure that
// DrawPlayerSprites is only called once. Either to draw
// HUD models or to draw the weapon sprites.
// [BB] HUD models need to be rendered here.
const bool renderHUDModel = gl_IsHUDModelForPlayerAvailable( players[consoleplayer].camera->player );
if ( renderHUDModel )
{
// [BB] The HUD model should be drawn over everything else already drawn.
glClear(GL_DEPTH_BUFFER_BIT);
DrawPlayerSprites (viewsector, true);
gl_drawinfo->DrawPlayerSprites(true);
}
glDisable(GL_STENCIL_TEST);
@ -550,11 +549,8 @@ void GLSceneDrawer::DrawEndScene2D(sector_t * viewsector)
glDisable(GL_MULTISAMPLE);
// [BB] Only draw the sprites if we didn't render a HUD model before.
if (renderHUDModel == false)
{
DrawPlayerSprites(viewsector, false);
}
gl_drawinfo->DrawPlayerSprites(false);
if (gl.legacyMode)
{
gl_RenderState.DrawColormapOverlay();
@ -562,7 +558,6 @@ void GLSceneDrawer::DrawEndScene2D(sector_t * viewsector)
gl_RenderState.SetFixedColormap(CM_DEFAULT);
gl_RenderState.SetSoftLightLevel(-1);
DrawTargeterSprites();
if (!FGLRenderBuffers::IsEnabled())
{
DrawBlend(viewsector);