@@ -543,11 +543,12 @@ void W3DDisplay::onBeginBatch()
543543 m_batchTexture = nullptr ;
544544 m_batchMode = DRAW_IMAGE_ALPHA;
545545 m_batchGrayscale = FALSE ;
546+ m_batchNeedsInit = TRUE ;
547+
546548 if (m_2DRender)
547549 {
548550 m_2DRender->Reset ();
549551 }
550- m_batchNeedsInit = TRUE ;
551552}
552553
553554void W3DDisplay::onEndBatch ()
@@ -591,19 +592,17 @@ void W3DDisplay::setup2DRenderState(TextureClass *tex, DrawImageMode mode, Bool
591592 {
592593 m_batchTexture->Release_Ref ();
593594 }
595+
594596 m_batchTexture = tex;
595597 }
596598
597599 m_batchMode = mode;
598600 m_batchGrayscale = grayscale;
599601 m_batchNeedsInit = FALSE ;
600602 }
601- else
603+ else if (m_2DRender)
602604 {
603- if (m_2DRender)
604- {
605- m_2DRender->Reset ();
606- }
605+ m_2DRender->Reset ();
607606 }
608607
609608 if (m_2DRender)
@@ -620,26 +619,26 @@ void W3DDisplay::setup2DRenderState(TextureClass *tex, DrawImageMode mode, Bool
620619
621620 switch (mode)
622621 {
623- case DRAW_IMAGE_ALPHA:
624- m_2DRender->Enable_Additive (FALSE );
625- m_2DRender->Enable_Alpha (TRUE );
626- m_2DRender->Enable_Grayscale (grayscale);
627- break ;
628- case DRAW_IMAGE_GRAYSCALE:
629- m_2DRender->Enable_Additive (FALSE );
630- m_2DRender->Enable_Alpha (TRUE );
631- m_2DRender->Enable_Grayscale (TRUE );
632- break ;
633- case DRAW_IMAGE_ADDITIVE:
634- m_2DRender->Enable_Additive (TRUE );
635- m_2DRender->Enable_Alpha (FALSE );
636- m_2DRender->Enable_Grayscale (grayscale);
637- break ;
638- case DRAW_IMAGE_SOLID:
639- m_2DRender->Enable_Additive (FALSE );
640- m_2DRender->Enable_Alpha (FALSE );
641- m_2DRender->Enable_Grayscale (grayscale);
642- break ;
622+ case DRAW_IMAGE_ALPHA:
623+ m_2DRender->Enable_Additive (FALSE );
624+ m_2DRender->Enable_Alpha (TRUE );
625+ m_2DRender->Enable_Grayscale (grayscale);
626+ break ;
627+ case DRAW_IMAGE_GRAYSCALE:
628+ m_2DRender->Enable_Additive (FALSE );
629+ m_2DRender->Enable_Alpha (TRUE );
630+ m_2DRender->Enable_Grayscale (TRUE );
631+ break ;
632+ case DRAW_IMAGE_ADDITIVE:
633+ m_2DRender->Enable_Additive (TRUE );
634+ m_2DRender->Enable_Alpha (FALSE );
635+ m_2DRender->Enable_Grayscale (grayscale);
636+ break ;
637+ case DRAW_IMAGE_SOLID:
638+ m_2DRender->Enable_Additive (FALSE );
639+ m_2DRender->Enable_Alpha (FALSE );
640+ m_2DRender->Enable_Grayscale (grayscale);
641+ break ;
643642 }
644643 }
645644}
@@ -2630,7 +2629,6 @@ void W3DDisplay::drawImage( const Image *image, Int startX, Int startY,
26302629 tex = WW3DAssetManager::Get_Instance ()->Get_Texture (image->getFilename ().str (), MIP_LEVELS_1);
26312630
26322631 Bool grayscale = (mode == DRAW_IMAGE_GRAYSCALE);
2633- // /@todo: Why are we alpha blending all images? Reduces our fillrate. -MW
26342632 setup2DRenderState (tex, mode, grayscale);
26352633
26362634 RectClass screen_rect (startX,startY,endX,endY);
0 commit comments