mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-02-25 06:19:02 -06:00
Add simple ability to cycle through FPS (instead of Frametime) with t / Shift+t
This commit is contained in:
@@ -68,8 +68,15 @@ public:
|
||||
Post
|
||||
};
|
||||
|
||||
enum class FrametimeType {
|
||||
DtTimeAvg = 0,
|
||||
FPS,
|
||||
FPSAvg
|
||||
};
|
||||
|
||||
static const std::string KeyFontMono;
|
||||
static const std::string KeyFontLight;
|
||||
static const std::vector<FrametimeType> FrametimeTypes;
|
||||
|
||||
RenderEngine();
|
||||
~RenderEngine();
|
||||
@@ -97,6 +104,7 @@ public:
|
||||
|
||||
void takeScreenshot();
|
||||
void toggleInfoText(bool b);
|
||||
void toggleFrametimeType(int t);
|
||||
|
||||
// Performance measurements
|
||||
void setPerformanceMeasurements(bool performanceMeasurements);
|
||||
@@ -199,6 +207,8 @@ private:
|
||||
ghoul::Dictionary _resolveData;
|
||||
ScreenLog* _log;
|
||||
|
||||
FrametimeType _frametimeType;
|
||||
|
||||
bool _showInfo;
|
||||
bool _showLog;
|
||||
bool _takeScreenshot;
|
||||
|
||||
@@ -11,6 +11,9 @@ helper.setCommonKeys = function()
|
||||
openspace.bindKey("F2", "openspace.setPerformanceMeasurement(true)")
|
||||
openspace.bindKey("F3", "openspace.setPerformanceMeasurement(false)")
|
||||
|
||||
openspace.bindKey("t", "openspace.toggleFrametimeType(1)")
|
||||
openspace.bindKey("Shift+t", "openspace.toggleFrametimeType(0)")
|
||||
|
||||
openspace.bindKey("ESC", "openspace.toggleShutdown()")
|
||||
|
||||
openspace.bindKey("PRINT_SCREEN", "openspace.takeScreenshot()")
|
||||
|
||||
@@ -106,7 +106,12 @@ namespace openspace {
|
||||
|
||||
const std::string RenderEngine::KeyFontMono = "Mono";
|
||||
const std::string RenderEngine::KeyFontLight = "Light";
|
||||
|
||||
const std::vector<RenderEngine::FrametimeType> RenderEngine::FrametimeTypes({
|
||||
RenderEngine::FrametimeType::DtTimeAvg,
|
||||
RenderEngine::FrametimeType::FPS,
|
||||
RenderEngine::FrametimeType::FPSAvg
|
||||
});
|
||||
|
||||
RenderEngine::RenderEngine()
|
||||
: _mainCamera(nullptr)
|
||||
, _sceneGraph(nullptr)
|
||||
@@ -121,6 +126,7 @@ RenderEngine::RenderEngine()
|
||||
, _fadeDuration(2.f)
|
||||
, _currentFadeTime(0.f)
|
||||
, _fadeDirection(0)
|
||||
, _frametimeType(FrametimeType::DtTimeAvg)
|
||||
// , _sgctRenderStatisticsVisible(false)
|
||||
{
|
||||
_onScreenInformation = {
|
||||
@@ -460,6 +466,21 @@ void RenderEngine::toggleInfoText(bool b) {
|
||||
_showInfo = b;
|
||||
}
|
||||
|
||||
void RenderEngine::toggleFrametimeType(int t) {
|
||||
std::vector<FrametimeType>::const_iterator it = std::find(
|
||||
FrametimeTypes.begin(), FrametimeTypes.end(), _frametimeType);
|
||||
|
||||
if (!t && it == FrametimeTypes.begin())
|
||||
it = FrametimeTypes.end();
|
||||
|
||||
t > 0 ? ++it : --it;
|
||||
|
||||
if (t && it == FrametimeTypes.end())
|
||||
it = FrametimeTypes.begin();
|
||||
|
||||
_frametimeType = *it;
|
||||
}
|
||||
|
||||
Scene* RenderEngine::scene() {
|
||||
// TODO custom assert (ticket #5)
|
||||
assert(_sceneGraph);
|
||||
@@ -713,6 +734,12 @@ scripting::LuaLibrary RenderEngine::luaLibrary() {
|
||||
"bool",
|
||||
"Toggles the showing of render information on-screen text"
|
||||
},
|
||||
{
|
||||
"toggleFrametimeType",
|
||||
&luascriptfunctions::toggleFrametimeType,
|
||||
"int",
|
||||
"Toggle showing FPS or Average Frametime in heads up info"
|
||||
},
|
||||
{
|
||||
"setPerformanceMeasurement",
|
||||
&luascriptfunctions::setPerformanceMeasurement,
|
||||
@@ -1250,11 +1277,36 @@ void RenderEngine::renderInformation() {
|
||||
Time::ref().deltaTime()
|
||||
);
|
||||
|
||||
RenderFontCr(*_fontInfo,
|
||||
penPosition,
|
||||
"Avg. Frametime: %.5f",
|
||||
OsEng.windowWrapper().averageDeltaTime()
|
||||
);
|
||||
switch (_frametimeType) {
|
||||
case FrametimeType::DtTimeAvg:
|
||||
RenderFontCr(*_fontInfo,
|
||||
penPosition,
|
||||
"Avg. Frametime: %.5f",
|
||||
OsEng.windowWrapper().averageDeltaTime()
|
||||
);
|
||||
break;
|
||||
case FrametimeType::FPS:
|
||||
RenderFontCr(*_fontInfo,
|
||||
penPosition,
|
||||
"FPS: %3.2f",
|
||||
1.0 / OsEng.windowWrapper().deltaTime()
|
||||
);
|
||||
break;
|
||||
case FrametimeType::FPSAvg:
|
||||
RenderFontCr(*_fontInfo,
|
||||
penPosition,
|
||||
"Avg. FPS: %3.2f",
|
||||
1.0 / OsEng.windowWrapper().averageDeltaTime()
|
||||
);
|
||||
break;
|
||||
default:
|
||||
RenderFontCr(*_fontInfo,
|
||||
penPosition,
|
||||
"Avg. Frametime: %.5f",
|
||||
OsEng.windowWrapper().averageDeltaTime()
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef OPENSPACE_MODULE_NEWHORIZONS_ENABLED
|
||||
bool hasNewHorizons = scene()->sceneGraphNode("NewHorizons");
|
||||
|
||||
@@ -81,7 +81,7 @@ int setNAaSamples(lua_State* L) {
|
||||
/**
|
||||
* \ingroup LuaScripts
|
||||
* visualizeABuffer(bool):
|
||||
* Toggle the visualization of the ABuffer
|
||||
* Toggle heads-up info display on master node
|
||||
*/
|
||||
int showRenderInformation(lua_State* L) {
|
||||
int nArguments = lua_gettop(L);
|
||||
@@ -98,6 +98,24 @@ int showRenderInformation(lua_State* L) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* \ingroup LuaScripts
|
||||
* toggleFramerateType(bool):
|
||||
* Cycle through showing FPS or Average Frametime in heads up info
|
||||
*/
|
||||
int toggleFrametimeType(lua_State* L) {
|
||||
int nArguments = lua_gettop(L);
|
||||
if (nArguments != 1)
|
||||
return luaL_error(L, "Expected %i arguments, got %i", 1, nArguments);
|
||||
|
||||
const int type = lua_type(L, -1);
|
||||
if (type != LUA_TNUMBER)
|
||||
return luaL_error(L, "Expected argument of type 'number'");
|
||||
int t = lua_tonumber(L, -1);
|
||||
OsEng.renderEngine().toggleFrametimeType(t);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* \ingroup LuaScripts
|
||||
* visualizeABuffer(bool):
|
||||
|
||||
Reference in New Issue
Block a user