【golang/g3n】3D游戏引擎G3N的windows安装与测试

目录

说在前面

  • 操作系统: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源代码

    shell 复制代码
    git clone https://github.com/g3n/engine g3n-engine

    同样添加下环境变量

  • 重启

  • 然后可以开始install了

    shell 复制代码
    cd g3n-engine
    go install ./...

测试

  • 创建一个空文件加,创建一个main.go 文件

    go 复制代码
    package 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)
    	})
    }
  • 初始化

    shell 复制代码
    go mod init test
    go mod tidy
  • 运行

    shell 复制代码
    go run main.go
  • 内存和cpu

相关推荐
紧跟先前的步伐7 小时前
Go AI Agent 实战 05|Temperature 与生成参数:让模型输出可控
java·人工智能·golang
是Yu欸9 小时前
机器人如何把二维画面变成三维动作?ECCV 2026 3DWay 论文解读
3d·机器人·论文解读·具身智能·eccv 2026
戴西软件12 小时前
制造研发中的AI视觉与仿真:戴西工程图纸智能审图智能体、戴西3DViz_CAE AI集成与戴西3DViz_CAD AI集成
大数据·运维·人工智能·3d·自动化·制造·rpa
浮尘笔记16 小时前
我用 Go 写了个手机端「远程 AI 开发控制台」(开源)
人工智能·智能手机·golang
我才是银古18 小时前
GeoLibre 技术架构与实现解析
3d·ai·gis
microrain18 小时前
专业版守核心,企业版做增量:SagooIoT 的跨模块能力出口
物联网·架构·golang·sagooiot
Wanda121419 小时前
机器人与机电一体化3D数字孪生机器-Day5
人工智能·unity·游戏引擎·数字孪生
Martina_032119 小时前
AI生成模型怎么做网页3D轻量化?用6步压缩Mesh、贴图与材质调用
图像处理·人工智能·3d·自然语言处理·aigc·游戏策划
Wanda121420 小时前
机器人与机电一体化3D数字孪生机器-Day4
3d·unity·机器人·数字孪生
紧跟先前的步伐20 小时前
Go AI Agent 实战 04|Prompt 与消息角色:System、User、Assistant
人工智能·golang·prompt