- 可能你要做一个三维软件,但是不想使用现成的3D引擎(Unity3D、Unreal之类);
- 可能你想要做一个跨平台的三维编辑软件,涉及到很多基本图元操作;
- 可能你厌烦了C++代码的内存管理,想要换用一下更新的程序语言写UI。
那这系列文章就是为这部分需求的技术选型打造的。
目前阶段来看,opengl还是跨平台最好的3D API。opengl和各个语言都有绑定,也都会有一些跨平台的特性。
比方说C++调用opengl比较直接方便,如果选用GLFW而不是MFC等框架是可以支持跨平台的,或者选用QT的解决方案,QT4、QT5都有单独封装好的opengl widget组件,也可以直接使用QT丰富的组件库。
java有LWJGL,一个一揽子的图形图像音频库集合,MineCraft使用了这个库。
但是,QT依赖比较重,C++写起来开发效率不太高,Java在内存和cpu利用率上不如非虚拟机语言。
本系列文章的技术选型是 golang、OpenGL、GLFW、Nuklear
- Golang编译为机器码,运行效率可以得到保障,同时相对优雅开发效率较高。
- OpenGL自不必说,核心就是它。
- GLFW提供了简单但是跨平台的窗口交互。
- Nuclear是个C语言开发的UI控件库,有golang的绑定,可以帮我们处理简单的界面显示问题。
由于本机环境为windows10,同时这套解决方案搭建最麻烦的是windows环境,本文以windows环境为例说一下基础环境建立。
MSYS2环境配置
由于GLFW需要gcc编译,我们选用MSys2来提供基础编译环境
首先在MSYS2官网https://www.msys2.org/下载安装包,如果速度慢可以去清华镜像https://mirror.tuna.tsinghua.edu.cn/help/msys2/下载,会快很多
下载之后进行安装,安装过程不赘述。
接下来需要配置基础编译环境,由于pacman直连国外比较慢,还需要替换一下国内源,清华、中科大、北理工的源都不错,替换教程可参见https://mirror.tuna.tsinghua.edu.cn/help/msys2/,如果msys2里操作不方便,可以找到在windows的msys2安装目录里的/etc/pacman.d下面直接编辑文本
编辑 /etc/pacman.d/mirrorlist.mingw32 ,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
编辑 /etc/pacman.d/mirrorlist.mingw64 ,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
编辑 /etc/pacman.d/mirrorlist.msys ,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch
然后执行 pacman -Sy 刷新软件包数据即可。
然后是本次安装的重头戏,gcc编译工具
pacman -S --needed base-devel mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain
安装完毕后,需要修改一下MSYS2的环境变量,找到MSYS2安装目录下的msys2_shell.bat
在15行附近增加如下两行
set MSYSTEM=MINGW64
set MSYS2_PATH_TYPE=inherit
运行msys2_shell.bat,执行gcc –help并看到有输出,说明编译环境安装完毕
$ gcc --help
Usage: gcc.exe [options] file...
Options:
-pass-exit-codes Exit with highest error code from a phase.
--help Display this information.
--target-help Display target specific command line options.
--help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...].
Display specific types of command line options.
(Use '-v --help' to display command line options of sub-processes).
--version Display compiler version information.
-dumpspecs Display all of the built in spec strings.
Golang的安装和配置
从go语言官网下载一个安装包(msi)或者压缩包都可以https://golang.google.cn/dl/
如果是压缩包的话,解压到磁盘后需要手动配置环境变量,包括%GOROOT%,%GOPATH%和%PATH%等,因为比较简单就不在此赘述,可以参考https://blog.csdn.net/keepd/article/details/79430254
安装完成后,在msys2界面(运行msys2_shell.bat)输入 go version应该正常显示go环境版本,如:
$ go version
go version go1.12.4 windows/amd64
如果没有显示正确结果,那么就需要看下msys2的环境变量是否设置正确,输入echo $PATH查看go安装文件夹bin目录是否在其中,如果没有在的话,请检查windows环境变量和set MSYS2_PATH_TYPE=inherit配置是否正确设置
go-gl、GLFW的安装、配置和测试
还是在msys2的环境下,执行如下语句对go-gl(go语言opengl)进行安装
go get -v github.com/go-gl/gl/v3.2-core/gl
然后安装GLFW
go get -u github.com/go-gl/glfw/v3.2/glfw
而后安装下UI库 Nuklear
go get -v github.com/golang-ui/nuklear/nk
对上述安装好的组件进行测试
下载Nuklear测试程序
go get github.com/golang-ui/nuklear/cmd/nk-example
执行测试
nk-example
如果出现下面界面,环境搭建部分就大功告成啦