2017-05-25 161 views
0

nanogui的外观非常吸引人,它看起来像设计良好的ui工具集。是否有可能在现有的项目中使用它,它不使用GLFW?我快速浏览了源代码,确实有一些GLFW依赖关系,例如(button.cpp)在没有GLFW的情况下在现有的OpenGL项目中使用nanogui

if (button == GLFW_MOUSE_BUTTON_1 && mEnabled) {...} 

或者是否有其他方式将GLFW混合到现有的OpenGL应用程序中?

回答

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本身第一(即,使用它创建一些简单的测试应用程序从头开始),以便您可以得到如何最好地将您的逻辑合并到它的处理。

顺便说一句,这的确是一个可爱的,漂亮的GUI,感谢它带给注意:)

+0

我读这为说,一个回答“不,你不能使用nanogui没有GLFW。” - 绝对是一个答案。 =) – Heiner

相关问题