46 lines
1009 B
Go
46 lines
1009 B
Go
package window
|
|
|
|
//#cgo CFLAGS: -IF:/Coding/GoModule/cgo
|
|
//#cgo LDFLAGS: -LF:/Coding/GoModule/cgo -lsdl2
|
|
//
|
|
import "C"
|
|
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
|
|
}
|
|
|
|
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
|
|
}
|
|
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
|
|
}
|
|
func (w *FSDLWindow) GetInstance() *sdl.Window {
|
|
return w.window
|
|
}
|