zworld-demo/cmd/main.go
2024-01-09 21:43:28 +08:00

53 lines
1.1 KiB
Go

package main
import (
"github.com/veandco/go-sdl2/sdl"
"zworld/engine"
"zworld/engine/core/zlog"
"zworld/engine/render/vulkan/instance"
"zworld/engine/rule"
"zworld/engine/window"
"zworld/plugin/objloader"
)
func main() {
w := engine.NewWorld(nil,
engine.FTimeRuleOption(&rule.FTimeRule{}),
engine.FActorRuleOption(&rule.FActorRule{}),
engine.FRenderRuleOption(&rule.FRenderRule{}))
err, mesh := objloader.LoadObj("asset/model/sphere.obj")
zlog.Infof("err", err, len(mesh.Positions))
win := window.NewSDLWindow(640, 720)
err = win.CreateWindow()
if err != nil {
zlog.Infof("err", err)
}
vulkan := instance.New("test", win, window.CreateLoaderFromSDL)
vulkan.EnumeratePhysicalDevices()
err = vulkan.Init()
if err != nil {
zlog.Infof("err", err)
return
}
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)
for i := 1; i < 100; i++ {
w.Tick()
}
}