void CGrassDrawer::Draw() { if (grassOff || !readMap->GetGrassShadingTexture()) return; SCOPED_TIMER("Grass::Draw"); glPushAttrib(GL_CURRENT_BIT); glColor4f(1.0f, 1.0f, 1.0f, 1.0f); if (!blockDrawer.inviewGrass.empty()) { SetupGlStateNear(); DrawNear(blockDrawer.inviewGrass); ResetGlStateNear(); } if ( globalRendering->haveGLSL && (!shadowHandler->shadowsLoaded || !globalRendering->atiHacks) // Ati crashes w/o an error when shadows are enabled!? && !(blockDrawer.inviewFarGrass.empty() && blockDrawer.inviewNearGrass.empty()) ) { SetupGlStateFar(); DrawFarBillboards(blockDrawer.inviewFarGrass); DrawNearBillboards(blockDrawer.inviewNearGrass); ResetGlStateFar(); } glPopAttrib(); }
void CGrassDrawer::Draw() { if (grassOff || !readMap->GetGrassShadingTexture()) return; SCOPED_TIMER("Draw::World::Foliage::Grass"); glPushAttrib(GL_CURRENT_BIT); glColor4f(1.0f, 1.0f, 1.0f, 1.0f); if (!blockDrawer.inviewGrass.empty()) { SetupGlStateNear(); DrawNear(blockDrawer.inviewGrass); ResetGlStateNear(); } // ATI crashes w/o an error when shadows are enabled!? static const bool shaders = globalRendering->haveGLSL; const bool shadows = (shadowHandler->ShadowsLoaded() && globalRendering->atiHacks); if (shaders && !shadows && (!blockDrawer.inviewFarGrass.empty() || !blockDrawer.inviewNearGrass.empty())) { SetupGlStateFar(); DrawFarBillboards(blockDrawer.inviewFarGrass); DrawNearBillboards(blockDrawer.inviewNearGrass); ResetGlStateFar(); } glPopAttrib(); }