mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Add vendor:wgpu
This commit is contained in:
Vendored
+55
@@ -0,0 +1,55 @@
|
||||
//+build !js
|
||||
package vendor_wgpu_example_triangle
|
||||
|
||||
import "core:time"
|
||||
|
||||
import "vendor:glfw"
|
||||
import "vendor:wgpu"
|
||||
import "vendor:wgpu/glfwglue"
|
||||
|
||||
OS :: struct {
|
||||
window: glfw.WindowHandle,
|
||||
}
|
||||
|
||||
os_init :: proc(os: ^OS) {
|
||||
if !glfw.Init() {
|
||||
panic("[glfw] init failure")
|
||||
}
|
||||
|
||||
glfw.WindowHint(glfw.CLIENT_API, glfw.NO_API)
|
||||
os.window = glfw.CreateWindow(960, 540, "WGPU Native Triangle", nil, nil)
|
||||
|
||||
glfw.SetFramebufferSizeCallback(os.window, size_callback)
|
||||
}
|
||||
|
||||
os_run :: proc(os: ^OS) {
|
||||
dt: f32
|
||||
|
||||
for !glfw.WindowShouldClose(os.window) {
|
||||
start := time.tick_now()
|
||||
|
||||
glfw.PollEvents()
|
||||
frame(dt)
|
||||
|
||||
dt = f32(time.duration_seconds(time.tick_since(start)))
|
||||
}
|
||||
|
||||
finish()
|
||||
|
||||
glfw.DestroyWindow(os.window)
|
||||
glfw.Terminate()
|
||||
}
|
||||
|
||||
os_get_render_bounds :: proc(os: ^OS) -> (width, height: u32) {
|
||||
iw, ih := glfw.GetWindowSize(os.window)
|
||||
return u32(iw), u32(ih)
|
||||
}
|
||||
|
||||
os_get_surface :: proc(os: ^OS, instance: wgpu.Instance) -> wgpu.Surface {
|
||||
return glfwglue.GetSurface(instance, os.window)
|
||||
}
|
||||
|
||||
@(private="file")
|
||||
size_callback :: proc "c" (window: glfw.WindowHandle, width, height: i32) {
|
||||
resize()
|
||||
}
|
||||
Reference in New Issue
Block a user