目录
说在前面
- 操作系统:win 11
- go version:go1.21.5 windows/amd64
- g3n版本:github.com/g3n/engine v0.2.0
- 其他:找了下golang 3d相关的库,目前好像就这个比较活跃
安装
-
按照官方教程所说,需要mingw环境,首先按照教程去下载 We tested the Windows build using the mingw-w64 toolchain (you can download this file in particular).
-
下载后将文件解压,并添加环境变量(主要是
bin
、include
、lib
)
-
然后下载g3n源代码
shellgit clone https://github.com/g3n/engine g3n-engine
同样添加下环境变量
-
重启
-
然后可以开始
install
了shellcd g3n-engine go install ./...
测试
-
创建一个空文件加,创建一个main.go 文件
gopackage main import ( "time" "github.com/g3n/engine/app" "github.com/g3n/engine/camera" "github.com/g3n/engine/core" "github.com/g3n/engine/geometry" "github.com/g3n/engine/gls" "github.com/g3n/engine/graphic" "github.com/g3n/engine/gui" "github.com/g3n/engine/light" "github.com/g3n/engine/material" "github.com/g3n/engine/math32" "github.com/g3n/engine/renderer" "github.com/g3n/engine/util/helper" "github.com/g3n/engine/window" ) func main() { // 创建app a := app.App() // 创建scene scene := core.NewNode() // 设置gui控制器 gui.Manager().Set(scene) // 创建相机 cam := camera.New(1) cam.SetPosition(0, 0, 3) scene.Add(cam) // 初始化相机控制器 camera.NewOrbitControl(cam) // 设置窗口回调 onResize := func(evname string, ev interface{}) { // Get framebuffer size and update viewport accordingly width, height := a.GetSize() a.Gls().Viewport(0, 0, int32(width), int32(height)) // Update the camera's aspect ratio cam.SetAspect(float32(width) / float32(height)) } a.Subscribe(window.OnWindowSize, onResize) onResize("", nil) // 添加一个蓝色甜甜圈 geom := geometry.NewTorus(1, .4, 12, 32, math32.Pi*2) mat := material.NewStandard(math32.NewColor("DarkBlue")) mesh := graphic.NewMesh(geom, mat) scene.Add(mesh) // 添加一个改变甜甜圈颜色的按钮 btn := gui.NewButton("Make Red") btn.SetPosition(100, 40) btn.SetSize(40, 40) btn.Subscribe(gui.OnClick, func(name string, ev interface{}) { mat.SetColor(math32.NewColor("DarkRed")) }) scene.Add(btn) // 添加光照 scene.Add(light.NewAmbient(&math32.Color{1.0, 1.0, 1.0}, 0.8)) pointLight := light.NewPoint(&math32.Color{1, 1, 1}, 5.0) pointLight.SetPosition(1, 0, 2) scene.Add(pointLight) // 添加坐标系显示 scene.Add(helper.NewAxes(0.5)) // 设置灰色背景色 a.Gls().ClearColor(0.5, 0.5, 0.5, 1.0) // 运行应用 a.Run(func(renderer *renderer.Renderer, deltaTime time.Duration) { a.Gls().Clear(gls.DEPTH_BUFFER_BIT | gls.STENCIL_BUFFER_BIT | gls.COLOR_BUFFER_BIT) renderer.Render(scene, cam) }) }
-
初始化
shellgo mod init test go mod tidy
-
运行
shellgo run main.go
-
内存和cpu