zvulkan/zvulkan-go/demo/00_base_code/main.go
2023-09-17 21:01:13 +08:00

74 lines
1.2 KiB
Go

package main
import (
"github.com/veandco/go-sdl2/sdl"
"log"
)
type HelloTriangleApplication struct {
window *sdl.Window
}
func (app *HelloTriangleApplication) Run() error {
err := app.initWindow()
if err != nil {
return err
}
err = app.initVulkan()
if err != nil {
return err
}
defer app.cleanup()
return app.mainLoop()
}
func (app *HelloTriangleApplication) initWindow() error {
if err := sdl.Init(sdl.INIT_VIDEO); err != nil {
return err
}
window, err := sdl.CreateWindow("Vulkan", sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED, 800, 600, sdl.WINDOW_SHOWN|sdl.WINDOW_VULKAN)
if err != nil {
return err
}
app.window = window
return nil
}
func (app *HelloTriangleApplication) initVulkan() error {
return nil
}
func (app *HelloTriangleApplication) mainLoop() error {
appLoop:
for true {
for event := sdl.PollEvent(); event != nil; event = sdl.PollEvent() {
switch event.(type) {
case *sdl.QuitEvent:
break appLoop
}
}
}
return nil
}
func (app *HelloTriangleApplication) cleanup() {
if app.window != nil {
app.window.Destroy()
}
sdl.Quit()
}
func main() {
app := &HelloTriangleApplication{}
err := app.Run()
if err != nil {
log.Fatalf("%+v\n", err)
}
}