/**
* Copyright 2012 Jason Sorensen (sorensenj@smert.net)
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package net.smert.frameworkgl.gui;
import net.smert.frameworkgl.opengl.renderer.TextRenderer;
import net.smert.frameworkgl.utils.Color;
import net.smert.frameworkgl.utils.TimeSpan;
/**
*
* @author Jason Sorensen <sorensenj@smert.net>
*/
public class SimpleDebugGuiScreen implements GuiScreen {
private int currentFps;
private int displayFps;
private final Color textureColor0;
private final TimeSpan fpsTimeSpan;
protected TextRenderer textRenderer;
public SimpleDebugGuiScreen() {
currentFps = 0;
displayFps = 0;
textureColor0 = new Color();
fpsTimeSpan = new TimeSpan();
}
public Color getTextureColor0() {
return textureColor0;
}
public void init(TextRenderer textRenderer) {
this.textRenderer = textRenderer;
}
@Override
public void onEnd() {
}
@Override
public void onStart() {
}
@Override
public void render() {
long freeMem = Runtime.getRuntime().freeMemory();
long maxMem = Runtime.getRuntime().maxMemory();
long totalMem = Runtime.getRuntime().totalMemory();
long usedMem = (totalMem - freeMem);
String memoryUsed = (usedMem / 1024L / 1024L) + "";
String memoryTotal = (maxMem / 1024L / 1024L) + "";
String percentUsed = ((usedMem * 100L) / maxMem) + "";
textRenderer.resetTextRendering();
textRenderer.setTextColor(textureColor0);
textRenderer.drawString("Current FPS: " + displayFps);
textRenderer.textNewLine();
textRenderer.drawString("Used memory: " + percentUsed + "% " + memoryUsed + "MB of " + memoryTotal + "MB");
textRenderer.textNewLine();
}
@Override
public void update() {
currentFps++;
long delta = fpsTimeSpan.diffNowToLastUpdate();
if (delta < 1000000000L) {
return;
}
displayFps = currentFps;
currentFps = 0;
fpsTimeSpan.addToCurrentTime(1000000000L);
}
}