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

3 篇文章 0 订阅
1 篇文章 0 订阅

前言

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

界面编辑

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

         

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

        

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

         

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

       

接下来选择菜单栏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建立的源码中就能完美显示了。

       

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值