基于wxWidgets框架,使用DialogBlocks建立OpenGL界面

前言

之前公司要求使用wxWidgets做GUI,基于OpenGL图形内核,开发三维可视化工具。目前初步开发工作基本已经完成,剩下都是完善了。这里记录一下最开始的框架搭建过程(当然是简化版啦)。wxWidgets结合OpenGL开发可以实现跨平台应用,再结合CMake和VS Code,整体开发工具用习惯了会感觉非常顺手。

界面编辑

首先,使用DialogBlocks新建一个工程,这里工程目录名为wxGL,工程名称为TestOpenGL。

         基于wxWidgets框架,使用DialogBlocks建立OpenGL界面_第1张图片

添加一个wxDialog元素,然后TestOpenGLApp的属性Main下有个Main window,设置其为ID_MAINDIALOG。

        基于wxWidgets框架,使用DialogBlocks建立OpenGL界面_第2张图片

在Advanced标签页中可以找到wxGLCanvas,设置其属性Size的Width和Height均为500,Sizer下的AlignH为Expand,然后Stretch factor设置为1。

         

然后添加一个wxBoxSizer:H,其下添加一个Button,设置其属性Main下的Label为Open。效果如下:

       基于wxWidgets框架,使用DialogBlocks建立OpenGL界面_第3张图片

接下来选择菜单栏View->Settings选择Configurations,若没添加编译器,先添加合适的编译器,然后选择其中一项,这里使用的GCC Unicode Debug。然后配置其Configuration Settings。Use OenGL选择Yes;Use installed wxWidgets选择Yes;C++ Command在原有字符串后添加-std=c++11;确定。接下来就可以正常Build啦!

CMake编译

接下来DialogBlocks就没用了!到工程目录下,删掉除了cpp和h以外的其他文件。新建一个文本文件,更名为CMakeLists.txt。内容如下,可以正常编译。然后终端下:cd build》cmake ..》make,即可得到可执行文件了。

cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
project(wxTest)

#如果遇到提示需要-std=c++11,则这句必须加上
set(CMAKE_CXX_STANDARD 11)

include_directories(./ /usr/include )
aux_source_directory(. SRC_DIR)
add_executable(myapp ${SRC_DIR})

#找到OpenGL库
set(GL_LIBPATH /usr/lib/x86_64-linux-gnu)
find_library(LIB_GLU GLU ${GL_LIBPATH})
find_library(LIB_GL  GL  ${GL_LIBPATH})
set(GL_LIBS ${LIB_GLU} ${LIB_GL})

#找到wxWidgets的相关包,直接使用即可
find_package(wxWidgets REQUIRED net gl core base)
include(${wxWidgets_USE_FILE})

target_link_libraries(myapp ${wxWidgets_LIBRARIES} ${GL_LIBS})

编译执行效果和之前DialogBlocks结果一致。可以看到实际Canvas中显示为窗体背后的内容。即它本身没有有效显示,这是正常的,因为要让OpenGL在wxWidgets下正常显示需要实现wxGLContext和wxGLCanvas两个类。具体程序可以参考wxWidgets提供的cube(Samples/opengl/cube)例程,将该Sample稍加改动copy到我们用DialogBlocks建立的源码中就能完美显示了。

       基于wxWidgets框架,使用DialogBlocks建立OpenGL界面_第4张图片

至此,我们就可以实现DialogBlocks为OpenGL编辑界面啦。(当然,之前那些删除的文件其实可以不删除,而是另外备份起来,这样当界面要增加新的需求时,可以随时更改)

你可能感兴趣的:(Linux,wxWidgets,OpenGL)