之后大约会把各种学习过程中的想法写成笔记放上来
- 原博客 https://linux.cn/article-8933-1.html,此处仅为个人的学习笔记,包括一些代码改动。
安装 Go
- 原主要使用语言是 Java,无法忍受 Oracle的作,转而投靠语法很类似 Java 的新生后端语言 Go (Google nb!)
- 意外地发现 Go的用途被玩出了花,其中包括因 C++配置问题进展停滞的 计算机图形学 / OpenGL
- 现在(2020年10月10日)的 Go已经做了很大的使用简化,Windows平台上.msi文件开箱即用,甚至不用配置 %GO_PATH%
- 十分极客,无需vs巨无霸,我喜欢
- 另外需要以下支持:
- gcc
- git
go get package
- 两个库:OpenGL & GLFW
> go get github.com/go-gl/gl/v4.6-core/gl
> go get github.com/go-gl/glfw/v3.3/glfw
- 一般需要科学上网玄学下载,无法go get下载可手动git clone扔进%GO_PATH%中,参见网上资料
编写测试文件
package main
import (
// "log" // 稍后使用
"runtime"
// "github.com/go-gl/gl/v4.0-core/gl" // 实验室电脑最高4.0
"github.com/go-gl/glfw/v3.3/glfw"
)
定义窗口参数
const (
width = 800
height = 600
)
创建窗口?
func initGlfw() *glfw.Window {
if err := glfw.Init(); err != nil {
panic(err)
}
glfw.WindowHint(glfw.Resizable, glfw.False)
glfw.WindowHint(glfw.ContextVersionMajor, 4) // 4.0
glfw.WindowHint(glfw.ContextVersionMinor, 0) // 这两行可能需要根据具体机器调整(主要是老电脑)
glfw.WindowHint(glfw.OpenGLProfile, glfw.OpenGLCoreProfile)
glfw.WindowHint(glfw.OpenGLForwardCompatible, glfw.True)
window, err := glfw.CreateWindow(width, height, "Conway's Game of Life", nil, nil)
if err != nil {
panic(err)
}
window.MakeContextCurrent()
return window
}
主循环
func main() {
runtime.LockOSThread()
window := initGlfw()
defer glfw.Terminate()
for !window.ShouldClose() {
// TODO
}
}
启动测试
go run main.go
// 上面代码所处文件- 会生成一个点一下就卡死(实际是无响应)的白色窗口,需要在命令行 Ctrl+ C 关闭
To be continued…