nanogui的外观和感觉非常吸引人,它看起来像一个精心设计的ui工具集。是否可以在现有项目中使用它,不使用GLFW?我快速浏览了一下源代码,确实存在一些GLFW依赖关系,例如: (button.cpp)
if (button == GLFW_MOUSE_BUTTON_1 && mEnabled) {...}
或者还有其他方法可以将GLFW混合到现有的OpenGL应用程序中吗?
答案 0 :(得分:2)
基于快速查看CMakeLists构建说明,特别是:
if (NOT IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/ext/glfw/src")
message(FATAL_ERROR "The NanoGUI dependency repositories (GLFW, etc.) are missing! "
"You probably did not clone the project with --recursive. It is possible to recover "
"by calling \"git submodule update --init --recursive\"")
endif()
它似乎在很大程度上依赖于GLFW作为主要框架。依赖性似乎特别重,因为它是一个GUI库,因此它本身与输入系统联系在一起。例如,您可以在https://github.com/wjakob/nanogui/blob/master/src/common.cpp中看到主循环与GLFW基本相关(也许更重要的是,主循环已经为您定义了 - 我还没有看到它是否可以是否被覆盖。
话虽如此,有一个GLCanvas对象允许你在GL渲染方面做任何你想做的事情;见:https://github.com/wjakob/nanogui/blob/master/include/nanogui/glcanvas.h。
因此,它似乎更像是一个框架而不是一个库。要移植您的应用程序,您需要根据NanoGUI小部件来考虑它。特别是,无论您要渲染什么,都要将其视为GLCanvas小部件。
集成的难度取决于您的应用程序的大小以及它与已经绑定到不同框架的程度。可能值得学习NanoGUI本身首先(即,使用它从头开始创建一些简单的测试应用程序),这样你就可以了解如何最好地将逻辑合并到其中。< / p>
顺便说一句,它确实是一个可爱的GUI,感谢它引起注意:)