From 2a42a10d4394ad7b5992f2251375b0ca70272dfa Mon Sep 17 00:00:00 2001 From: mathusummut Date: Mon, 25 Jun 2018 17:29:50 +0200 Subject: [PATCH] Fixed setDisplayText issue --- source/glest_game/graphics/renderer.cpp | 40 +++++++++---------- source/glest_game/gui/display.cpp | 8 ++-- .../include/graphics/gl/model_renderer_gl.h | 4 +- .../include/graphics/model_renderer.h | 4 +- .../sources/graphics/gl/model_renderer_gl.cpp | 14 ++++--- 5 files changed, 35 insertions(+), 35 deletions(-) diff --git a/source/glest_game/graphics/renderer.cpp b/source/glest_game/graphics/renderer.cpp index 3b8be8570..66544f3d1 100644 --- a/source/glest_game/graphics/renderer.cpp +++ b/source/glest_game/graphics/renderer.cpp @@ -2773,7 +2773,7 @@ namespace Glest { textRenderer3D->render(text, pos.x, pos.y); safeTextRender.end(); - glDisable(GL_BLEND); + //glDisable(GL_BLEND); glPopAttrib(); } @@ -2794,7 +2794,7 @@ namespace Glest { //textRenderer3D->end(); safeTextRender.end(); - glDisable(GL_BLEND); + //glDisable(GL_BLEND); glPopAttrib(); } @@ -2990,7 +2990,7 @@ namespace Glest { textRenderer3D->render(text, pos.x, pos.y); safeTextRender.end(); - glDisable(GL_BLEND); + //glDisable(GL_BLEND); glPopAttrib(); } @@ -3010,7 +3010,7 @@ namespace Glest { textRenderer3D->render(text, pos.x, pos.y, centered); safeTextRender.end(); - glDisable(GL_BLEND); + //glDisable(GL_BLEND); glPopAttrib(); } @@ -5287,15 +5287,13 @@ namespace Glest { //dead alpha const SkillType *st = unit->getCurrSkill(); + float alpha = 1.0f; if (st->getClass() == scDie && static_cast(st)->getFade()) { - float alpha = 1.0f - unit->getAnimProgressAsFloat(); - glDisable(GL_COLOR_MATERIAL); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, Vec4f(1.0f, 1.0f, 1.0f, alpha).ptr()); - } else { - glEnable(GL_COLOR_MATERIAL); - // we cut off a tiny bit here to avoid problems with fully transparent texture parts cutting units in background rendered later. - glAlphaFunc(GL_GREATER, 0.02f); + alpha = 1.0f - unit->getAnimProgressAsFloat(); } + glEnable(GL_COLOR_MATERIAL); + // we cut off a tiny bit here to avoid problems with fully transparent texture parts cutting units in background rendered later. + glAlphaFunc(GL_GREATER, 0.02f); //render Model *model = unit->getCurrentModelPtr(); @@ -5305,7 +5303,7 @@ namespace Glest { model->updateInterpolationData(unit->getAnimProgressAsFloat(), unit->isAlive() && !unit->isAnimProgressBound()); //} - modelRenderer->render(model); + modelRenderer->render(model, alpha); triangleCount += model->getTriangleCount(); pointCount += model->getVertexCount(); @@ -6021,7 +6019,7 @@ namespace Glest { glVertex2i(mx + mw, my + mh); glEnd(); - glDisable(GL_BLEND); + //glDisable(GL_BLEND); glActiveTexture(fowTexUnit); glDisable(GL_TEXTURE_2D); @@ -6140,7 +6138,7 @@ namespace Glest { } } - glDisable(GL_BLEND); + //glDisable(GL_BLEND); //draw units VisibleQuadContainerCache &qCache = getQuadCache(); @@ -6374,7 +6372,7 @@ namespace Glest { glDisableClientState(GL_COLOR_ARRAY); glDisableClientState(GL_VERTEX_ARRAY); - glDisable(GL_BLEND); + //glDisable(GL_BLEND); } } } @@ -6752,7 +6750,7 @@ namespace Glest { } glEnd(); } - glDisable(GL_BLEND); + //glDisable(GL_BLEND); //raindrops if (menuBackground->getRain()) { @@ -8059,7 +8057,7 @@ namespace Glest { glColor4fv(defColor.ptr()); //blend state - glDisable(GL_BLEND); + //glDisable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); //if(SystemFlags::VERBOSE_MODE_ENABLED) printf("In [%s::%s %d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__); @@ -8150,7 +8148,7 @@ namespace Glest { //if(SystemFlags::VERBOSE_MODE_ENABLED) printf("In [%s::%s %d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__); //disable everything - glDisable(GL_BLEND); + //glDisable(GL_BLEND); glDisable(GL_LIGHTING); glDisable(GL_ALPHA_TEST); glDisable(GL_DEPTH_TEST); @@ -8322,7 +8320,7 @@ namespace Glest { glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE); //blend state - glDisable(GL_BLEND); + //glDisable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); //alpha test state @@ -8692,7 +8690,7 @@ namespace Glest { glVertex2i(x + maxSize, y + progressbarHeight); glVertex2i(x + maxSize, y); glEnd(); - glDisable(GL_BLEND); + //glDisable(GL_BLEND); //text //glColor3fv(defColor.ptr()); @@ -8744,7 +8742,7 @@ namespace Glest { glVertex2i(x + maxSize, y + 10); glVertex2i(x + maxSize, y); glEnd(); - glDisable(GL_BLEND); + //glDisable(GL_BLEND); //text glColor3fv(defColor.ptr()); diff --git a/source/glest_game/gui/display.cpp b/source/glest_game/gui/display.cpp index 96c2a7a08..087b2c93f 100644 --- a/source/glest_game/gui/display.cpp +++ b/source/glest_game/gui/display.cpp @@ -29,10 +29,10 @@ namespace Glest { Display::Display() { if (SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem, "In [%s::%s Line: %d]\n", __FILE__, __FUNCTION__, __LINE__); - colors[0] = Vec4f(1.f, 1.f, 1.f, 0.0f); - colors[1] = Vec4f(1.f, 0.5f, 0.5f, 0.0f); - colors[2] = Vec4f(0.5f, 0.5f, 1.0f, 0.0f); - colors[3] = Vec4f(0.5f, 1.0f, 0.5f, 0.0f); + colors[0] = Vec4f(1.f, 1.f, 1.f, 1.0f); + colors[1] = Vec4f(1.f, 0.5f, 0.5f, 1.0f); + colors[2] = Vec4f(0.5f, 0.5f, 1.0f, 1.0f); + colors[3] = Vec4f(0.5f, 1.0f, 0.5f, 1.0f); colors[4] = Vec4f(0.0f, 0.0f, 0.0f, 1.0f); colors[5] = Vec4f(0.0f, 0.0f, 1.0f, 1.0f); colors[6] = Vec4f(1.0f, 0.0f, 0.0f, 1.0f); diff --git a/source/shared_lib/include/graphics/gl/model_renderer_gl.h b/source/shared_lib/include/graphics/gl/model_renderer_gl.h index 30ce31806..306920aaf 100644 --- a/source/shared_lib/include/graphics/gl/model_renderer_gl.h +++ b/source/shared_lib/include/graphics/gl/model_renderer_gl.h @@ -36,7 +36,7 @@ namespace Shared { ModelRendererGl(); virtual void begin(bool renderNormals, bool renderTextures, bool renderColors, bool colorPickingMode, MeshCallback *meshCallback); virtual void end(); - virtual void render(Model *model, int renderMode = rmNormal); + virtual void render(Model *model, int renderMode = rmNormal, float alpha = 1.0f); virtual void renderNormalsOnly(Model *model); void setDuplicateTexCoords(bool duplicateTexCoords) { @@ -48,7 +48,7 @@ namespace Shared { private: - void renderMesh(Mesh *mesh, int renderMode = rmNormal); + void renderMesh(Mesh *mesh, int renderMode = rmNormal, float alpha = 1.0f); void renderMeshNormals(Mesh *mesh); }; diff --git a/source/shared_lib/include/graphics/model_renderer.h b/source/shared_lib/include/graphics/model_renderer.h index 4b6b9d3f6..66cdddcae 100644 --- a/source/shared_lib/include/graphics/model_renderer.h +++ b/source/shared_lib/include/graphics/model_renderer.h @@ -58,7 +58,7 @@ namespace Shared { ModelRenderer() { renderNormals = false; renderTextures = false; - renderColors = false; + renderColors = true; colorPickingMode = false; meshCallback = NULL; @@ -69,7 +69,7 @@ namespace Shared { virtual void begin(bool renderNormals, bool renderTextures, bool renderColors, bool colorPickingMode, MeshCallback *meshCallback = NULL) = 0; virtual void end() = 0; - virtual void render(Model *model, int renderMode = rmNormal) = 0; + virtual void render(Model *model, int renderMode = rmNormal, float alpha = 1.0f) = 0; virtual void renderNormalsOnly(Model *model) = 0; }; diff --git a/source/shared_lib/sources/graphics/gl/model_renderer_gl.cpp b/source/shared_lib/sources/graphics/gl/model_renderer_gl.cpp index 8b8d8a740..8328f905f 100644 --- a/source/shared_lib/sources/graphics/gl/model_renderer_gl.cpp +++ b/source/shared_lib/sources/graphics/gl/model_renderer_gl.cpp @@ -124,7 +124,7 @@ namespace Shared { assertGl(); } - void ModelRendererGl::render(Model *model, int renderMode) { + void ModelRendererGl::render(Model *model, int renderMode, float alpha) { //assertions assert(rendering); assertGl(); @@ -134,7 +134,7 @@ namespace Shared { //render every mesh //if(model->getIsStaticModel() == true) { for (uint32 i = 0; i < model->getMeshCount(); ++i) { - renderMesh(model->getMeshPtr(i), renderMode); + renderMesh(model->getMeshPtr(i), renderMode, alpha); } //} //assertions @@ -159,7 +159,7 @@ namespace Shared { // ===================== PRIVATE ======================= - void ModelRendererGl::renderMesh(Mesh *mesh, int renderMode) { + void ModelRendererGl::renderMesh(Mesh *mesh, int renderMode, float alpha) { if (renderMode == rmSelection && mesh->getNoSelect() == true) {// don't render this and do nothing return; @@ -174,17 +174,19 @@ namespace Shared { } else { glEnable(GL_CULL_FACE); } - + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + //glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, Vec4f(1.0f, 1.0f, 1.0f, alpha).ptr()); if (renderMode == rmNormal && mesh->getGlow() == true) { // glow on glDisable(GL_LIGHTING); - glBlendFunc(GL_SRC_ALPHA, GL_ONE); } if (this->colorPickingMode == false) { //set color if (renderColors) { - Vec4f color(mesh->getDiffuseColor(), mesh->getOpacity()); + Vec4f color(mesh->getDiffuseColor(), mesh->getOpacity() * alpha); glColor4fv(color.ptr()); }