Skip to content

Commit

Permalink
fix #5141
Browse files Browse the repository at this point in the history
  • Loading branch information
rtri committed Mar 6, 2016
1 parent 4bb70d5 commit bb4a332
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 14 deletions.
12 changes: 9 additions & 3 deletions rts/Map/BaseGroundDrawer.cpp
Expand Up @@ -59,12 +59,19 @@ CBaseGroundDrawer::~CBaseGroundDrawer()

void CBaseGroundDrawer::DrawTrees(bool drawReflection) const
{
glPushAttrib(GL_ENABLE_BIT | GL_COLOR_BUFFER_BIT | GL_CURRENT_BIT);

glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, 0.005f);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

if (treeDrawer->drawTrees) {
// NOTE:
// the info-texture now contains an alpha-component
// so binding it here means trees will be invisible
// when shadows are disabled
if (infoTextureHandler->IsEnabled()) {
glActiveTextureARB(GL_TEXTURE1_ARB);
glEnable(GL_TEXTURE_2D);
Expand Down Expand Up @@ -95,7 +102,6 @@ void CBaseGroundDrawer::DrawTrees(bool drawReflection) const
}
}

glDisable(GL_ALPHA_TEST);
glDisable(GL_BLEND);
glPopAttrib();
}

6 changes: 3 additions & 3 deletions rts/Rendering/Env/AdvTreeDrawer.cpp
Expand Up @@ -464,8 +464,10 @@ void CAdvTreeDrawer::Draw(float treeDistance, bool drawReflection)
const int activeFarTex = treeGen->farTex[cam->GetDir().z >= 0.0f];
const bool drawDetailed = ((treeDistance >= 4.0f) || drawReflection);

glPushAttrib(GL_ENABLE_BIT | GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
glEnable(GL_ALPHA_TEST);
glEnable(GL_TEXTURE_2D);
glDepthMask(GL_TRUE);

sky->SetupFog();

Expand Down Expand Up @@ -728,9 +730,7 @@ void CAdvTreeDrawer::Draw(float treeDistance, bool drawReflection)
glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE_ARB, GL_LUMINANCE);
}

glDisable(GL_TEXTURE_2D);
glDisable(GL_FOG);
glDisable(GL_ALPHA_TEST);
glPopAttrib();



Expand Down
9 changes: 7 additions & 2 deletions rts/Rendering/Env/AdvTreeGenerator.cpp
Expand Up @@ -451,14 +451,18 @@ void CAdvTreeGenerator::CreateGranTex(unsigned char* data, int xpos, int ypos, i
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glOrtho(0,1,0,1,-4,4);
glViewport(0,0,256,256);

glPushAttrib(GL_ENABLE_BIT | GL_CURRENT_BIT | GL_COLOR_BUFFER_BIT);
glDisable(GL_TEXTURE_2D);
glDisable(GL_FOG);
glDisable(GL_BLEND);
glColor4f(1,1,1,1);
glViewport(0,0,256,256);

glAlphaFunc(GL_GREATER,0.5f);
glEnable(GL_ALPHA_TEST);
glDisable(GL_DEPTH_TEST);

glClearColor(0.0f,0.0f,0.0f,0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

Expand All @@ -483,7 +487,8 @@ void CAdvTreeGenerator::CreateGranTex(unsigned char* data, int xpos, int ypos, i
}
}

glEnable(GL_DEPTH_TEST);
glPopAttrib();

glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
Expand Down
6 changes: 2 additions & 4 deletions rts/Rendering/Env/Particles/ProjectileDrawer.cpp
Expand Up @@ -564,6 +564,7 @@ void CProjectileDrawer::DrawFlyingPieces(int modelType)


void CProjectileDrawer::Draw(bool drawReflection, bool drawRefraction) {
glPushAttrib(GL_ENABLE_BIT | GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_CURRENT_BIT);
glDisable(GL_BLEND);
glEnable(GL_TEXTURE_2D);
glDepthMask(GL_TRUE);
Expand Down Expand Up @@ -619,10 +620,7 @@ void CProjectileDrawer::Draw(bool drawReflection, bool drawRefraction) {
CProjectile::DrawArray();
}

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_ALPHA_TEST);
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
glDepthMask(GL_TRUE);
glPopAttrib();
}

void CProjectileDrawer::DrawShadowPass()
Expand Down
4 changes: 2 additions & 2 deletions rts/Sim/Units/Scripts/CobThread.h
Expand Up @@ -60,8 +60,8 @@ class CCobThread
void ShowError(const std::string& msg);
void AnimFinished(CUnitScript::AnimType type, int piece, int axis);

int GetRetCode() { return retCode; }
bool IsWaiting() { return waitAxis != -1; }
int GetRetCode() const { return retCode; }
bool IsWaiting() const { return (waitAxis != -1); }

CCobInstance* owner;
protected:
Expand Down

0 comments on commit bb4a332

Please sign in to comment.