From cad295c9120ad50875a2bfde396f9fc5a661fa6b Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Wed, 16 Jun 2010 07:18:06 +0000 Subject: [PATCH] - a few minor render updates to try to squeeze better performance out of the rendering (only render visible and explored unit and object cells) --- source/glest_game/game/game.cpp | 10 +++++----- source/glest_game/graphics/renderer.cpp | 7 +++++-- source/glest_game/world/world.cpp | 6 ++++-- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/source/glest_game/game/game.cpp b/source/glest_game/game/game.cpp index 6cef4de78..54141e8b4 100644 --- a/source/glest_game/game/game.cpp +++ b/source/glest_game/game/game.cpp @@ -1152,14 +1152,13 @@ void Game::render2d(){ //debug info string str; - if(config.getBool("DebugMode") || difftime(time(NULL),lastRenderLog2d) >= 1){ + if(gui.getShowDebugUI() == true || difftime(time(NULL),lastRenderLog2d) >= 1) { str+= "MouseXY: " + intToStr(mouseX) + "," + intToStr(mouseY)+"\n"; str+= "PosObjWord: " + intToStr(gui.getPosObjWorld().x) + "," + intToStr(gui.getPosObjWorld().y)+"\n"; str+= "Render FPS: "+intToStr(lastRenderFps)+"\n"; str+= "Update FPS: "+intToStr(lastUpdateFps)+"\n"; str+= "GameCamera pos: "+floatToStr(gameCamera.getPos().x)+","+floatToStr(gameCamera.getPos().y)+","+floatToStr(gameCamera.getPos().z)+"\n"; str+= "Time: "+floatToStr(world.getTimeFlow()->getTime(),8)+"\n"; - //str+= "Time Increment: "+floatToStr(world.getTimeFlow()->getTimeInc(),8)+"\n"; str+= "Triangle count: "+intToStr(renderer.getTriangleCount())+"\n"; str+= "Vertex count: "+intToStr(renderer.getPointCount())+"\n"; str+= "Frame count:"+intToStr(world.getFrameCount())+"\n"; @@ -1197,7 +1196,8 @@ void Game::render2d(){ SurfaceCell *sc= map->getSurfaceCell(mapPos.x, mapPos.y); Object *o= sc->getObject(); bool isExplored = (sc->isExplored(thisTeamIndex) && o!=NULL); - if(isExplored == true) { + bool isVisible = (sc->isVisible(thisTeamIndex) && o!=NULL); + if(isExplored == true && isVisible == true) { visibleObjectCount++; } } @@ -1215,7 +1215,7 @@ void Game::render2d(){ } } - if(config.getBool("DebugMode") && gui.getShowDebugUI() == true) { + if(gui.getShowDebugUI() == true) { renderer.renderText(str, coreData.getMenuFontNormal(), Vec3f(1.0f), 10, 500, false); @@ -1239,7 +1239,7 @@ void Game::render2d(){ } //resource info - if(!config.getBool("PhotoMode")) { + if(config.getBool("PhotoMode") == false) { renderer.renderResourceStatus(); renderer.renderConsole(&console,showFullConsole); } diff --git a/source/glest_game/graphics/renderer.cpp b/source/glest_game/graphics/renderer.cpp index b8427002c..8a4402b25 100644 --- a/source/glest_game/graphics/renderer.cpp +++ b/source/glest_game/graphics/renderer.cpp @@ -1306,7 +1306,8 @@ void Renderer::renderObjects(const int renderFps, const int worldFrameCount) { SurfaceCell *sc= map->getSurfaceCell(mapPos.x, mapPos.y); Object *o= sc->getObject(); bool isExplored = (sc->isExplored(thisTeamIndex) && o!=NULL); - if(isExplored == true) { + bool isVisible = (sc->isVisible(thisTeamIndex) && o!=NULL); + if(isExplored == true && isVisible == true) { /* if(renderFps < MIN_RENDER_FPS_ALLOWED) { int renderLag = worldFrameCount - o->getLastRenderFrame(); @@ -2826,8 +2827,10 @@ void Renderer::renderObjectsFast() { Vec2i mapPos = Map::toSurfCoords(pos); SurfaceCell *sc= map->getSurfaceCell(mapPos); Object *o= sc->getObject(); - if(sc->isExplored(thisTeamIndex) && o!=NULL){ + bool isExplored = (sc->isExplored(thisTeamIndex) && o!=NULL); + bool isVisible = (sc->isVisible(thisTeamIndex) && o!=NULL); + if(isExplored == true && isVisible == true) { const Model *objModel= sc->getObject()->getModel(); Vec3f v= o->getPos(); diff --git a/source/glest_game/world/world.cpp b/source/glest_game/world/world.cpp index cf40a5c67..117faf388 100644 --- a/source/glest_game/world/world.cpp +++ b/source/glest_game/world/world.cpp @@ -381,9 +381,11 @@ bool World::toRenderUnit(const Unit *unit, const Quad2i &visibleQuad) const{ bool World::toRenderUnit(const Unit *unit) const{ return - map.getSurfaceCell(Map::toSurfCoords(unit->getCenteredPos()))->isVisible(thisTeamIndex) || + (map.getSurfaceCell(Map::toSurfCoords(unit->getCenteredPos()))->isVisible(thisTeamIndex) && + map.getSurfaceCell(Map::toSurfCoords(unit->getCenteredPos()))->isExplored(thisTeamIndex) ) || (unit->getCurrSkill()->getClass()==scAttack && - map.getSurfaceCell(Map::toSurfCoords(unit->getTargetPos()))->isVisible(thisTeamIndex)); + map.getSurfaceCell(Map::toSurfCoords(unit->getTargetPos()))->isVisible(thisTeamIndex) && + map.getSurfaceCell(Map::toSurfCoords(unit->getTargetPos()))->isExplored(thisTeamIndex)); } void World::createUnit(const string &unitName, int factionIndex, const Vec2i &pos){