zworld-demo/engine/window/sdl.go

46 lines
1009 B
Go
Raw Permalink Normal View History

2023-12-23 18:01:28 +08:00
package window
2024-01-08 22:01:42 +08:00
//#cgo CFLAGS: -IF:/Coding/GoModule/cgo
//#cgo LDFLAGS: -LF:/Coding/GoModule/cgo -lsdl2
//
import "C"
2023-12-23 18:01:28 +08:00
import (
"github.com/veandco/go-sdl2/sdl"
"github.com/vkngwrapper/core/v2"
)
type FSDLWindow struct {
loader core.VulkanLoader
window *sdl.Window
width int32
height int32
}
2024-01-08 22:01:42 +08:00
func NewSDLWindow(width, height int32) *FSDLWindow {
return &FSDLWindow{
width: width,
height: height,
}
}
func CreateLoaderFromSDL() *core.VulkanLoader {
loader, err := core.CreateLoaderFromProcAddr(sdl.VulkanGetVkGetInstanceProcAddr())
if err != nil {
panic(err)
}
return loader
}
2023-12-23 18:01:28 +08:00
func (w *FSDLWindow) CreateWindow() error {
if err := sdl.Init(sdl.INIT_VIDEO); err != nil {
return err
}
window, err := sdl.CreateWindow("Vulkan", sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED, w.width, w.height, sdl.WINDOW_SHOWN|sdl.WINDOW_VULKAN|sdl.WINDOW_RESIZABLE)
if err != nil {
return err
}
w.window = window
return nil
}
2024-01-08 22:01:42 +08:00
func (w *FSDLWindow) GetInstance() *sdl.Window {
return w.window
}