mirror of
https://github.com/glest/glest-source.git
synced 2025-10-04 19:31:32 +02:00
- added a FPS cap (at 800 fps we will sleep for 1 millisecond) to avoid pinning the cpu for hardware that has fps which is too good. Also user can toggle fps view on any screen now
This commit is contained in:
@@ -1051,6 +1051,9 @@ void Game::render() {
|
|||||||
this->restoreToStartXY();
|
this->restoreToStartXY();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
canRender();
|
||||||
|
incrementFps();
|
||||||
|
|
||||||
renderFps++;
|
renderFps++;
|
||||||
totalRenderFps++;
|
totalRenderFps++;
|
||||||
renderWorker();
|
renderWorker();
|
||||||
@@ -1077,6 +1080,8 @@ void Game::renderWorker() {
|
|||||||
// ==================== tick ====================
|
// ==================== tick ====================
|
||||||
|
|
||||||
void Game::tick() {
|
void Game::tick() {
|
||||||
|
ProgramState::tick();
|
||||||
|
|
||||||
tickCount++;
|
tickCount++;
|
||||||
|
|
||||||
if(avgUpdateFps == -1) {
|
if(avgUpdateFps == -1) {
|
||||||
|
@@ -6003,4 +6003,20 @@ void Renderer::cycleShowDebugUILevel() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Renderer::renderFPSWhenEnabled(int lastFps) {
|
||||||
|
if(getShowDebugUI() == true) {
|
||||||
|
CoreData &coreData= CoreData::getInstance();
|
||||||
|
if(Renderer::renderText3DEnabled) {
|
||||||
|
renderText3D(
|
||||||
|
"FPS: " + intToStr(lastFps),
|
||||||
|
coreData.getMenuFontNormal3D(), Vec3f(1.f), 10, 10, false);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
renderText(
|
||||||
|
"FPS: " + intToStr(lastFps),
|
||||||
|
coreData.getMenuFontNormal(), Vec3f(1.f), 10, 10, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}}//end namespace
|
}}//end namespace
|
||||||
|
@@ -376,6 +376,8 @@ public:
|
|||||||
void beginRenderToTexture(Texture2D **renderToTexture);
|
void beginRenderToTexture(Texture2D **renderToTexture);
|
||||||
void endRenderToTexture(Texture2D **renderToTexture);
|
void endRenderToTexture(Texture2D **renderToTexture);
|
||||||
|
|
||||||
|
void renderFPSWhenEnabled(int lastFps);
|
||||||
|
|
||||||
//components
|
//components
|
||||||
void renderLabel(GraphicLabel *label);
|
void renderLabel(GraphicLabel *label);
|
||||||
void renderLabel(GraphicLabel *label,const Vec3f *color);
|
void renderLabel(GraphicLabel *label,const Vec3f *color);
|
||||||
|
@@ -80,24 +80,29 @@ void BattleEnd::update() {
|
|||||||
|
|
||||||
void BattleEnd::render() {
|
void BattleEnd::render() {
|
||||||
Renderer &renderer= Renderer::getInstance();
|
Renderer &renderer= Renderer::getInstance();
|
||||||
|
CoreData &coreData= CoreData::getInstance();
|
||||||
|
|
||||||
|
canRender();
|
||||||
|
incrementFps();
|
||||||
|
|
||||||
if(renderToTexture != NULL) {
|
if(renderToTexture != NULL) {
|
||||||
//printf("Rendering from texture!\n");
|
//printf("Rendering from texture!\n");
|
||||||
|
|
||||||
renderer.clearBuffers();
|
renderer.clearBuffers();
|
||||||
renderer.reset2d();
|
renderer.reset3dMenu();
|
||||||
|
renderer.clearZBuffer();
|
||||||
renderer.renderBackground(renderToTexture);
|
renderer.renderBackground(renderToTexture);
|
||||||
|
|
||||||
|
renderer.reset2d();
|
||||||
|
|
||||||
renderer.renderButton(&buttonExit);
|
renderer.renderButton(&buttonExit);
|
||||||
|
|
||||||
//exit message box
|
//exit message box
|
||||||
if(mainMessageBox.getEnabled()){
|
if(mainMessageBox.getEnabled() && mainMessageBox.getVisible()) {
|
||||||
renderer.renderMessageBox(&mainMessageBox);
|
renderer.renderMessageBox(&mainMessageBox);
|
||||||
}
|
}
|
||||||
|
|
||||||
renderer.renderMouse2d(mouseX, mouseY, mouse2dAnim);
|
renderer.renderMouse2d(mouseX, mouseY, mouse2dAnim);
|
||||||
|
|
||||||
renderer.swapBuffers();
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//printf("Rendering to texture!\n");
|
//printf("Rendering to texture!\n");
|
||||||
@@ -118,6 +123,8 @@ void BattleEnd::render() {
|
|||||||
Lang &lang= Lang::getInstance();
|
Lang &lang= Lang::getInstance();
|
||||||
|
|
||||||
renderer.clearBuffers();
|
renderer.clearBuffers();
|
||||||
|
renderer.reset3dMenu();
|
||||||
|
renderer.clearZBuffer();
|
||||||
renderer.reset2d();
|
renderer.reset2d();
|
||||||
renderer.renderBackground(CoreData::getInstance().getBackgroundTexture());
|
renderer.renderBackground(CoreData::getInstance().getBackgroundTexture());
|
||||||
|
|
||||||
@@ -388,9 +395,11 @@ void BattleEnd::render() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
renderer.endRenderToTexture(&renderToTexture);
|
renderer.endRenderToTexture(&renderToTexture);
|
||||||
|
|
||||||
renderer.swapBuffers();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
renderer.renderFPSWhenEnabled(lastFps);
|
||||||
|
|
||||||
|
renderer.swapBuffers();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BattleEnd::keyDown(char key){
|
void BattleEnd::keyDown(char key){
|
||||||
|
@@ -45,6 +45,7 @@ public:
|
|||||||
virtual void keyDown(char key);
|
virtual void keyDown(char key);
|
||||||
virtual void mouseDownLeft(int x, int y);
|
virtual void mouseDownLeft(int x, int y);
|
||||||
virtual void mouseMove(int x, int y, const MouseState *ms);
|
virtual void mouseMove(int x, int y, const MouseState *ms);
|
||||||
|
//virtual void tick();
|
||||||
};
|
};
|
||||||
|
|
||||||
}}//end namespace
|
}}//end namespace
|
||||||
|
@@ -106,7 +106,10 @@ void Intro::update(){
|
|||||||
|
|
||||||
void Intro::render() {
|
void Intro::render() {
|
||||||
Renderer &renderer= Renderer::getInstance();
|
Renderer &renderer= Renderer::getInstance();
|
||||||
int difTime;
|
int difTime=0;
|
||||||
|
|
||||||
|
canRender();
|
||||||
|
incrementFps();
|
||||||
|
|
||||||
renderer.reset2d();
|
renderer.reset2d();
|
||||||
renderer.clearBuffers();
|
renderer.clearBuffers();
|
||||||
@@ -152,6 +155,8 @@ void Intro::render() {
|
|||||||
|
|
||||||
if(this->forceMouseRender == true) renderer.renderMouse2d(mouseX, mouseY, mouse2d, 0.f);
|
if(this->forceMouseRender == true) renderer.renderMouse2d(mouseX, mouseY, mouse2d, 0.f);
|
||||||
|
|
||||||
|
renderer.renderFPSWhenEnabled(lastFps);
|
||||||
|
|
||||||
renderer.swapBuffers();
|
renderer.swapBuffers();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -47,8 +47,41 @@ const int SOUND_THREAD_UPDATE_MILLISECONDS = 25;
|
|||||||
// class Program::CrashProgramState
|
// class Program::CrashProgramState
|
||||||
// =====================================================
|
// =====================================================
|
||||||
|
|
||||||
|
ProgramState::ProgramState(Program *program) {
|
||||||
|
this->program= program;
|
||||||
|
this->forceMouseRender = false;
|
||||||
|
this->mouseX = 0;
|
||||||
|
this->mouseY = 0;
|
||||||
|
this->mouse2dAnim = 0;
|
||||||
|
this->fps= 0;
|
||||||
|
this->lastFps= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProgramState::incrementFps() {
|
||||||
|
fps++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProgramState::tick() {
|
||||||
|
lastFps= fps;
|
||||||
|
fps= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ProgramState::canRender(bool sleepIfCannotRender) {
|
||||||
|
if(lastFps > 800) {
|
||||||
|
if(sleepIfCannotRender == true) {
|
||||||
|
sleep(1);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void ProgramState::render() {
|
void ProgramState::render() {
|
||||||
Renderer &renderer= Renderer::getInstance();
|
Renderer &renderer= Renderer::getInstance();
|
||||||
|
|
||||||
|
canRender();
|
||||||
|
incrementFps();
|
||||||
|
|
||||||
renderer.clearBuffers();
|
renderer.clearBuffers();
|
||||||
renderer.reset2d();
|
renderer.reset2d();
|
||||||
renderer.renderMessageBox(program->getMsgBox());
|
renderer.renderMessageBox(program->getMsgBox());
|
||||||
|
@@ -55,22 +55,22 @@ protected:
|
|||||||
int startY;
|
int startY;
|
||||||
bool forceMouseRender;
|
bool forceMouseRender;
|
||||||
|
|
||||||
public:
|
int fps;
|
||||||
ProgramState(Program *program) {
|
int lastFps;
|
||||||
this->program= program;
|
|
||||||
this->forceMouseRender = false;
|
|
||||||
this->mouseX = 0;
|
|
||||||
this->mouseY = 0;
|
|
||||||
this->mouse2dAnim = 0;
|
|
||||||
|
|
||||||
}
|
public:
|
||||||
|
ProgramState(Program *program);
|
||||||
virtual ~ProgramState(){};
|
virtual ~ProgramState(){};
|
||||||
|
|
||||||
|
int getFps() const { return fps; }
|
||||||
|
int getLastFps() const { return lastFps; }
|
||||||
|
|
||||||
//virtual void render()=0;
|
//virtual void render()=0;
|
||||||
|
virtual bool canRender(bool sleepIfCannotRender=true);
|
||||||
virtual void render();
|
virtual void render();
|
||||||
virtual void update();
|
virtual void update();
|
||||||
virtual void updateCamera(){};
|
virtual void updateCamera(){};
|
||||||
virtual void tick(){};
|
virtual void tick();
|
||||||
virtual void init(){};
|
virtual void init(){};
|
||||||
virtual void load(){};
|
virtual void load(){};
|
||||||
virtual void end(){};
|
virtual void end(){};
|
||||||
@@ -96,6 +96,9 @@ public:
|
|||||||
virtual Program * getProgram() { return program; }
|
virtual Program * getProgram() { return program; }
|
||||||
virtual void setForceMouseRender(bool value) { forceMouseRender=value;}
|
virtual void setForceMouseRender(bool value) { forceMouseRender=value;}
|
||||||
virtual void consoleAddLine(string line) { };
|
virtual void consoleAddLine(string line) { };
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void incrementFps();
|
||||||
};
|
};
|
||||||
|
|
||||||
// ===============================
|
// ===============================
|
||||||
|
@@ -55,9 +55,6 @@ MainMenu::MainMenu(Program *program):
|
|||||||
state= NULL;
|
state= NULL;
|
||||||
this->program= program;
|
this->program= program;
|
||||||
|
|
||||||
fps= 0;
|
|
||||||
lastFps= 0;
|
|
||||||
|
|
||||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
|
||||||
setState(new MenuStateRoot(program, this));
|
setState(new MenuStateRoot(program, this));
|
||||||
@@ -93,7 +90,9 @@ void MainMenu::render() {
|
|||||||
Renderer &renderer= Renderer::getInstance();
|
Renderer &renderer= Renderer::getInstance();
|
||||||
CoreData &coreData= CoreData::getInstance();
|
CoreData &coreData= CoreData::getInstance();
|
||||||
|
|
||||||
fps++;
|
//fps++;
|
||||||
|
canRender();
|
||||||
|
incrementFps();
|
||||||
|
|
||||||
renderer.clearBuffers();
|
renderer.clearBuffers();
|
||||||
|
|
||||||
@@ -110,18 +109,7 @@ void MainMenu::render() {
|
|||||||
state->render();
|
state->render();
|
||||||
renderer.renderMouse2d(mouseX, mouseY, mouse2dAnim);
|
renderer.renderMouse2d(mouseX, mouseY, mouse2dAnim);
|
||||||
|
|
||||||
if(renderer.getShowDebugUI() == true) {
|
renderer.renderFPSWhenEnabled(lastFps);
|
||||||
if(Renderer::renderText3DEnabled) {
|
|
||||||
renderer.renderText3D(
|
|
||||||
"FPS: " + intToStr(lastFps),
|
|
||||||
coreData.getMenuFontNormal3D(), Vec3f(1.f), 10, 10, false);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
renderer.renderText(
|
|
||||||
"FPS: " + intToStr(lastFps),
|
|
||||||
coreData.getMenuFontNormal(), Vec3f(1.f), 10, 10, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
renderer.swapBuffers();
|
renderer.swapBuffers();
|
||||||
}
|
}
|
||||||
@@ -134,11 +122,6 @@ void MainMenu::update(){
|
|||||||
state->update();
|
state->update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainMenu::tick(){
|
|
||||||
lastFps= fps;
|
|
||||||
fps= 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//event magangement: mouse click
|
//event magangement: mouse click
|
||||||
void MainMenu::mouseMove(int x, int y, const MouseState *ms){
|
void MainMenu::mouseMove(int x, int y, const MouseState *ms){
|
||||||
mouseX= x; mouseY= y;
|
mouseX= x; mouseY= y;
|
||||||
|
@@ -85,7 +85,6 @@ private:
|
|||||||
//shared
|
//shared
|
||||||
int mouseX, mouseY;
|
int mouseX, mouseY;
|
||||||
int mouse2dAnim;
|
int mouse2dAnim;
|
||||||
int fps, lastFps;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MainMenu(Program *program);
|
MainMenu(Program *program);
|
||||||
@@ -96,7 +95,6 @@ public:
|
|||||||
|
|
||||||
virtual void render();
|
virtual void render();
|
||||||
virtual void update();
|
virtual void update();
|
||||||
virtual void tick();
|
|
||||||
virtual void init();
|
virtual void init();
|
||||||
virtual void mouseMove(int x, int y, const MouseState *mouseState);
|
virtual void mouseMove(int x, int y, const MouseState *mouseState);
|
||||||
virtual void mouseDownLeft(int x, int y);
|
virtual void mouseDownLeft(int x, int y);
|
||||||
|
Reference in New Issue
Block a user