From 542b1492909e73ab92677b1a8063aaf34988a8ec Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Sun, 23 Aug 2020 07:47:50 +0200 Subject: [PATCH] sokol: fix examples and remove copy pasta --- examples/sokol/drawing.v | 10 +--------- examples/sokol/fonts.v | 12 ++---------- examples/sokol/freetype_raven.v | 12 ++---------- examples/sokol/particles/main.v | 10 +--------- vlib/gg/gg.v | 18 +---------------- vlib/sokol/sapp/sapp.v | 34 +++++++++++++++++++++++++++++++++ vlib/sokol/sokol.v | 1 + 7 files changed, 42 insertions(+), 55 deletions(-) diff --git a/examples/sokol/drawing.v b/examples/sokol/drawing.v index fc5a32798c..98664fc2a3 100644 --- a/examples/sokol/drawing.v +++ b/examples/sokol/drawing.v @@ -27,15 +27,7 @@ fn main() { } fn init(user_data voidptr) { - desc := C.sg_desc{ - mtl_device: sapp.metal_get_device() - mtl_renderpass_descriptor_cb: sapp.metal_get_renderpass_descriptor - mtl_drawable_cb: sapp.metal_get_drawable - d3d11_device: sapp.d3d11_get_device() - d3d11_device_context: sapp.d3d11_get_device_context() - d3d11_render_target_view_cb: sapp.d3d11_get_render_target_view - d3d11_depth_stencil_view_cb: sapp.d3d11_get_depth_stencil_view - } + desc := sapp.create_desc() // C.sg_desc{ gfx.setup(&desc) sgl_desc := C.sgl_desc_t{} sgl.setup(&sgl_desc) diff --git a/examples/sokol/fonts.v b/examples/sokol/fonts.v index 7bac91f318..c189960c93 100644 --- a/examples/sokol/fonts.v +++ b/examples/sokol/fonts.v @@ -38,16 +38,8 @@ fn main() { } fn init(mut state AppState) { - // dont actually alocate this on the heap in real life - gfx.setup(&C.sg_desc{ - mtl_device: sapp.metal_get_device() - mtl_renderpass_descriptor_cb: sapp.metal_get_renderpass_descriptor - mtl_drawable_cb: sapp.metal_get_drawable - d3d11_device: sapp.d3d11_get_device() - d3d11_device_context: sapp.d3d11_get_device_context() - d3d11_render_target_view_cb: sapp.d3d11_get_render_target_view - d3d11_depth_stencil_view_cb: sapp.d3d11_get_depth_stencil_view - }) + desc := sapp.create_desc() + gfx.setup(&desc) s := &C.sgl_desc_t{} C.sgl_setup(s) state.fons = sfons.create(512, 512, 1) diff --git a/examples/sokol/freetype_raven.v b/examples/sokol/freetype_raven.v index f10d8aa940..a17e937137 100644 --- a/examples/sokol/freetype_raven.v +++ b/examples/sokol/freetype_raven.v @@ -92,16 +92,8 @@ fn main() { fn init(user_data voidptr) { mut state := &AppState(user_data) - // dont actually alocate this on the heap in real life - gfx.setup(&C.sg_desc{ - mtl_device: sapp.metal_get_device() - mtl_renderpass_descriptor_cb: sapp.metal_get_renderpass_descriptor - mtl_drawable_cb: sapp.metal_get_drawable - d3d11_device: sapp.d3d11_get_device() - d3d11_device_context: sapp.d3d11_get_device_context() - d3d11_render_target_view_cb: sapp.d3d11_get_render_target_view - d3d11_depth_stencil_view_cb: sapp.d3d11_get_depth_stencil_view - }) + desc := sapp.create_desc() + gfx.setup(&desc) s := &C.sgl_desc_t{} C.sgl_setup(s) state.fons = sfons.create(512, 512, 1) diff --git a/examples/sokol/particles/main.v b/examples/sokol/particles/main.v index 74a96649e9..a308c6e3af 100644 --- a/examples/sokol/particles/main.v +++ b/examples/sokol/particles/main.v @@ -68,15 +68,7 @@ fn (a App) draw() { } fn init(user_data voidptr) { - desc := C.sg_desc{ - mtl_device: sapp.metal_get_device() - mtl_renderpass_descriptor_cb: sapp.metal_get_renderpass_descriptor - mtl_drawable_cb: sapp.metal_get_drawable - d3d11_device: sapp.d3d11_get_device() - d3d11_device_context: sapp.d3d11_get_device_context() - d3d11_render_target_view_cb: sapp.d3d11_get_render_target_view - d3d11_depth_stencil_view_cb: sapp.d3d11_get_depth_stencil_view - } + desc := sapp.create_desc() gfx.setup(&desc) sgl_desc := C.sgl_desc_t{ max_vertices: 50 * 65536 diff --git a/vlib/gg/gg.v b/vlib/gg/gg.v index f7e3faa086..5cd2f3d825 100644 --- a/vlib/gg/gg.v +++ b/vlib/gg/gg.v @@ -74,23 +74,7 @@ pub: fn gg_init_sokol_window(user_data voidptr) { mut g := &Context(user_data) - mtl_desc := C.sg_mtl_context_desc { - device: sapp.metal_get_device() - renderpass_descriptor_cb: sapp.metal_get_renderpass_descriptor - drawable_cb: sapp.metal_get_drawable - } - d3d11_desc := C.sg_d3d11_context_desc { - device: sapp.d3d11_get_device() - device_context: sapp.d3d11_get_device_context() - render_target_view_cb: sapp.d3d11_get_render_target_view - depth_stencil_view_cb: sapp.d3d11_get_depth_stencil_view - } - desc := C.sg_desc{ - context: C.sg_context_desc{ - metal: mtl_desc - d3d11: d3d11_desc - } - } + desc := sapp.create_desc() /* desc := C.sg_desc{ mtl_device: sapp.metal_get_device() diff --git a/vlib/sokol/sapp/sapp.v b/vlib/sokol/sapp/sapp.v index a307426c7c..786dca5637 100644 --- a/vlib/sokol/sapp/sapp.v +++ b/vlib/sokol/sapp/sapp.v @@ -3,6 +3,40 @@ module sapp // Android needs a global reference to `g_desc` __global g_desc C.sapp_desc +pub fn create_desc() C.sg_desc { + mtl_desc := C.sg_mtl_context_desc { + device: metal_get_device() + renderpass_descriptor_cb: metal_get_renderpass_descriptor + drawable_cb: metal_get_drawable + } + d3d11_desc := C.sg_d3d11_context_desc { + device: d3d11_get_device() + device_context: d3d11_get_device_context() + render_target_view_cb: d3d11_get_render_target_view + depth_stencil_view_cb: d3d11_get_depth_stencil_view + } + + /* + // Old Sokol + return C.sg_desc{ + mtl_device: sapp.metal_get_device() + mtl_renderpass_descriptor_cb: sapp.metal_get_renderpass_descriptor + mtl_drawable_cb: sapp.metal_get_drawable + d3d11_device: sapp.d3d11_get_device() + d3d11_device_context: sapp.d3d11_get_device_context() + d3d11_render_target_view_cb: sapp.d3d11_get_render_target_view + d3d11_depth_stencil_view_cb: sapp.d3d11_get_depth_stencil_view + } + */ + + return C.sg_desc{ + context: C.sg_context_desc{ + metal: mtl_desc + d3d11: d3d11_desc + } + } +} + /* returns true after sokol-app has been initialized */ [inline] pub fn isvalid() bool { diff --git a/vlib/sokol/sokol.v b/vlib/sokol/sokol.v index 49a4234360..10ddf256c3 100644 --- a/vlib/sokol/sokol.v +++ b/vlib/sokol/sokol.v @@ -17,3 +17,4 @@ pub enum Key { space = C.SAPP_KEYCODE_SPACE } */ +