zworld-demo/cmd/main.go

53 lines
1.1 KiB
Go
Raw Permalink Normal View History

2023-12-22 22:04:27 +08:00
package main
import (
2024-01-09 21:43:28 +08:00
"github.com/veandco/go-sdl2/sdl"
2023-12-22 22:04:27 +08:00
"zworld/engine"
"zworld/engine/core/zlog"
2023-12-23 18:01:28 +08:00
"zworld/engine/render/vulkan/instance"
2023-12-22 22:04:27 +08:00
"zworld/engine/rule"
2024-01-08 22:01:42 +08:00
"zworld/engine/window"
2023-12-22 22:04:27 +08:00
"zworld/plugin/objloader"
)
func main() {
2023-12-23 18:01:28 +08:00
w := engine.NewWorld(nil,
engine.FTimeRuleOption(&rule.FTimeRule{}),
engine.FActorRuleOption(&rule.FActorRule{}),
engine.FRenderRuleOption(&rule.FRenderRule{}))
2023-12-22 22:04:27 +08:00
err, mesh := objloader.LoadObj("asset/model/sphere.obj")
zlog.Infof("err", err, len(mesh.Positions))
2024-01-08 22:01:42 +08:00
win := window.NewSDLWindow(640, 720)
err = win.CreateWindow()
if err != nil {
zlog.Infof("err", err)
}
vulkan := instance.New("test", win, window.CreateLoaderFromSDL)
2023-12-23 18:01:28 +08:00
vulkan.EnumeratePhysicalDevices()
2024-01-09 00:02:30 +08:00
err = vulkan.Init()
if err != nil {
zlog.Infof("err", err)
2024-01-09 21:43:28 +08:00
return
2024-01-09 00:02:30 +08:00
}
2024-01-09 21:43:28 +08:00
appLoop:
for true {
for event := sdl.PollEvent(); event != nil; event = sdl.PollEvent() {
switch event.(type) {
case *sdl.QuitEvent:
break appLoop
}
}
err := vulkan.DrawFrame()
if err != nil {
zlog.Infof("err", err)
break appLoop
}
}
_, err = vulkan.WaitIdle()
zlog.Infof("err", err)
2024-01-08 22:01:42 +08:00
for i := 1; i < 100; i++ {
w.Tick()
}
2023-12-22 22:04:27 +08:00
}