- 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:
parent
68e3ad8036
commit
ec15c81d12
|
@ -1051,6 +1051,9 @@ void Game::render() {
|
|||
this->restoreToStartXY();
|
||||
}
|
||||
|
||||
canRender();
|
||||
incrementFps();
|
||||
|
||||
renderFps++;
|
||||
totalRenderFps++;
|
||||
renderWorker();
|
||||
|
@ -1077,6 +1080,8 @@ void Game::renderWorker() {
|
|||
// ==================== tick ====================
|
||||
|
||||
void Game::tick() {
|
||||
ProgramState::tick();
|
||||
|
||||
tickCount++;
|
||||
|
||||
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
|
||||
|
|
|
@ -376,6 +376,8 @@ public:
|
|||
void beginRenderToTexture(Texture2D **renderToTexture);
|
||||
void endRenderToTexture(Texture2D **renderToTexture);
|
||||
|
||||
void renderFPSWhenEnabled(int lastFps);
|
||||
|
||||
//components
|
||||
void renderLabel(GraphicLabel *label);
|
||||
void renderLabel(GraphicLabel *label,const Vec3f *color);
|
||||
|
|
|
@ -80,24 +80,29 @@ void BattleEnd::update() {
|
|||
|
||||
void BattleEnd::render() {
|
||||
Renderer &renderer= Renderer::getInstance();
|
||||
CoreData &coreData= CoreData::getInstance();
|
||||
|
||||
canRender();
|
||||
incrementFps();
|
||||
|
||||
if(renderToTexture != NULL) {
|
||||
//printf("Rendering from texture!\n");
|
||||
|
||||
renderer.clearBuffers();
|
||||
renderer.reset2d();
|
||||
renderer.reset3dMenu();
|
||||
renderer.clearZBuffer();
|
||||
renderer.renderBackground(renderToTexture);
|
||||
|
||||
renderer.reset2d();
|
||||
|
||||
renderer.renderButton(&buttonExit);
|
||||
|
||||
//exit message box
|
||||
if(mainMessageBox.getEnabled()){
|
||||
if(mainMessageBox.getEnabled() && mainMessageBox.getVisible()) {
|
||||
renderer.renderMessageBox(&mainMessageBox);
|
||||
}
|
||||
|
||||
renderer.renderMouse2d(mouseX, mouseY, mouse2dAnim);
|
||||
|
||||
renderer.swapBuffers();
|
||||
}
|
||||
else {
|
||||
//printf("Rendering to texture!\n");
|
||||
|
@ -118,6 +123,8 @@ void BattleEnd::render() {
|
|||
Lang &lang= Lang::getInstance();
|
||||
|
||||
renderer.clearBuffers();
|
||||
renderer.reset3dMenu();
|
||||
renderer.clearZBuffer();
|
||||
renderer.reset2d();
|
||||
renderer.renderBackground(CoreData::getInstance().getBackgroundTexture());
|
||||
|
||||
|
@ -388,9 +395,11 @@ void BattleEnd::render() {
|
|||
}
|
||||
|
||||
renderer.endRenderToTexture(&renderToTexture);
|
||||
|
||||
renderer.swapBuffers();
|
||||
}
|
||||
|
||||
renderer.renderFPSWhenEnabled(lastFps);
|
||||
|
||||
renderer.swapBuffers();
|
||||
}
|
||||
|
||||
void BattleEnd::keyDown(char key){
|
||||
|
|
|
@ -45,6 +45,7 @@ public:
|
|||
virtual void keyDown(char key);
|
||||
virtual void mouseDownLeft(int x, int y);
|
||||
virtual void mouseMove(int x, int y, const MouseState *ms);
|
||||
//virtual void tick();
|
||||
};
|
||||
|
||||
}}//end namespace
|
||||
|
|
|
@ -106,7 +106,10 @@ void Intro::update(){
|
|||
|
||||
void Intro::render() {
|
||||
Renderer &renderer= Renderer::getInstance();
|
||||
int difTime;
|
||||
int difTime=0;
|
||||
|
||||
canRender();
|
||||
incrementFps();
|
||||
|
||||
renderer.reset2d();
|
||||
renderer.clearBuffers();
|
||||
|
@ -152,6 +155,8 @@ void Intro::render() {
|
|||
|
||||
if(this->forceMouseRender == true) renderer.renderMouse2d(mouseX, mouseY, mouse2d, 0.f);
|
||||
|
||||
renderer.renderFPSWhenEnabled(lastFps);
|
||||
|
||||
renderer.swapBuffers();
|
||||
}
|
||||
|
||||
|
|
|
@ -47,8 +47,41 @@ const int SOUND_THREAD_UPDATE_MILLISECONDS = 25;
|
|||
// 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() {
|
||||
Renderer &renderer= Renderer::getInstance();
|
||||
|
||||
canRender();
|
||||
incrementFps();
|
||||
|
||||
renderer.clearBuffers();
|
||||
renderer.reset2d();
|
||||
renderer.renderMessageBox(program->getMsgBox());
|
||||
|
|
|
@ -55,22 +55,22 @@ protected:
|
|||
int startY;
|
||||
bool forceMouseRender;
|
||||
|
||||
public:
|
||||
ProgramState(Program *program) {
|
||||
this->program= program;
|
||||
this->forceMouseRender = false;
|
||||
this->mouseX = 0;
|
||||
this->mouseY = 0;
|
||||
this->mouse2dAnim = 0;
|
||||
int fps;
|
||||
int lastFps;
|
||||
|
||||
}
|
||||
public:
|
||||
ProgramState(Program *program);
|
||||
virtual ~ProgramState(){};
|
||||
|
||||
int getFps() const { return fps; }
|
||||
int getLastFps() const { return lastFps; }
|
||||
|
||||
//virtual void render()=0;
|
||||
virtual bool canRender(bool sleepIfCannotRender=true);
|
||||
virtual void render();
|
||||
virtual void update();
|
||||
virtual void updateCamera(){};
|
||||
virtual void tick(){};
|
||||
virtual void tick();
|
||||
virtual void init(){};
|
||||
virtual void load(){};
|
||||
virtual void end(){};
|
||||
|
@ -96,6 +96,9 @@ public:
|
|||
virtual Program * getProgram() { return program; }
|
||||
virtual void setForceMouseRender(bool value) { forceMouseRender=value;}
|
||||
virtual void consoleAddLine(string line) { };
|
||||
|
||||
protected:
|
||||
virtual void incrementFps();
|
||||
};
|
||||
|
||||
// ===============================
|
||||
|
|
|
@ -55,9 +55,6 @@ MainMenu::MainMenu(Program *program):
|
|||
state= NULL;
|
||||
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__);
|
||||
|
||||
setState(new MenuStateRoot(program, this));
|
||||
|
@ -93,7 +90,9 @@ void MainMenu::render() {
|
|||
Renderer &renderer= Renderer::getInstance();
|
||||
CoreData &coreData= CoreData::getInstance();
|
||||
|
||||
fps++;
|
||||
//fps++;
|
||||
canRender();
|
||||
incrementFps();
|
||||
|
||||
renderer.clearBuffers();
|
||||
|
||||
|
@ -110,18 +109,7 @@ void MainMenu::render() {
|
|||
state->render();
|
||||
renderer.renderMouse2d(mouseX, mouseY, mouse2dAnim);
|
||||
|
||||
if(renderer.getShowDebugUI() == true) {
|
||||
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.renderFPSWhenEnabled(lastFps);
|
||||
|
||||
renderer.swapBuffers();
|
||||
}
|
||||
|
@ -134,11 +122,6 @@ void MainMenu::update(){
|
|||
state->update();
|
||||
}
|
||||
|
||||
void MainMenu::tick(){
|
||||
lastFps= fps;
|
||||
fps= 0;
|
||||
}
|
||||
|
||||
//event magangement: mouse click
|
||||
void MainMenu::mouseMove(int x, int y, const MouseState *ms){
|
||||
mouseX= x; mouseY= y;
|
||||
|
|
|
@ -85,7 +85,6 @@ private:
|
|||
//shared
|
||||
int mouseX, mouseY;
|
||||
int mouse2dAnim;
|
||||
int fps, lastFps;
|
||||
|
||||
public:
|
||||
MainMenu(Program *program);
|
||||
|
@ -96,7 +95,6 @@ public:
|
|||
|
||||
virtual void render();
|
||||
virtual void update();
|
||||
virtual void tick();
|
||||
virtual void init();
|
||||
virtual void mouseMove(int x, int y, const MouseState *mouseState);
|
||||
virtual void mouseDownLeft(int x, int y);
|
||||
|
|
Loading…
Reference in New Issue