Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 28 additions & 5 deletions SofaGLFW/src/SofaGLFW/NullGUIEngine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,19 +29,42 @@ namespace sofaglfw

void NullGUIEngine::init()
{

m_lastTime = glfwGetTime();
m_lastDisplayTime = m_lastTime;
m_avgFrameTime = 0.0;
}
void NullGUIEngine::initBackend(GLFWwindow*)
void NullGUIEngine::initBackend(GLFWwindow* window)
{

m_window = window;
}
void NullGUIEngine::startFrame(SofaGLFWBaseGUI*)
{

}
void NullGUIEngine::endFrame()
{

constexpr double displayRefreshInterval = 0.1;
constexpr double smoothingFactor = 0.05;

const double now = glfwGetTime();
const double dt = now - m_lastTime;
m_lastTime = now;

if (dt > 0.0)
{
if (m_avgFrameTime <= 0.0)
m_avgFrameTime = dt;
else
m_avgFrameTime += smoothingFactor * (dt - m_avgFrameTime);
}

if (now - m_lastDisplayTime >= displayRefreshInterval)
{
const double fps = (m_avgFrameTime > 0.0) ? 1.0 / m_avgFrameTime : 0.0;
char title_string[32];
std::snprintf(title_string, sizeof(title_string), "FPS: %.1f", fps);
glfwSetWindowTitle(m_window, title_string);
m_lastDisplayTime = now;
}
}

void NullGUIEngine::beforeDraw(GLFWwindow* window)
Expand Down
5 changes: 5 additions & 0 deletions SofaGLFW/src/SofaGLFW/NullGUIEngine.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,11 @@ class NullGUIEngine : public BaseGUIEngine
bool dispatchMouseEvents() override;
void resetCounter() override;
sofa::type::Vec2i getFrameBufferPixels(std::vector<uint8_t>& pixels) override;
private:
GLFWwindow* m_window{ nullptr };
double m_lastTime{ 0.0 };
double m_lastDisplayTime{ 0.0 };
double m_avgFrameTime{ 0.0 };
};

} // namespace sofaglfw
6 changes: 5 additions & 1 deletion SofaImGui/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -150,8 +150,12 @@ set(IMGUI_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/resources ${imgui_SOURCE_DIR} $
add_library(${PROJECT_NAME} SHARED ${HEADER_FILES} ${SOURCE_FILES} ${IMGUI_SOURCE_FILES})
target_include_directories(${PROJECT_NAME} PUBLIC "$<BUILD_INTERFACE:${IMGUI_SOURCE_DIR}>")
target_link_libraries(${PROJECT_NAME} PUBLIC SofaGLFW Sofa.GL.Component.Rendering3D ${CMAKE_DL_LIBS})
target_link_libraries(${PROJECT_NAME} PRIVATE nfd)
target_link_libraries(${PROJECT_NAME} PRIVATE SimpleIni::SimpleIni)
if (EXISTS nfd)
target_link_libraries(${PROJECT_NAME} PRIVATE nfd)
else()
target_link_libraries(${PROJECT_NAME} PRIVATE nfd::nfd)
endif()

# setup the same API exports for imgui
target_compile_definitions(${PROJECT_NAME} PUBLIC IMGUI_API=SOFAIMGUI_API)
Expand Down
Loading