static void Init() { sg_desc desc = new sg_desc { context = sapp_sgcontext(), }; sg_setup(&desc); sgl_desc gldesc = new sgl_desc { sample_count = sapp_sample_count(), }; sgl_setup(&gldesc); sg_image_desc imagedesc = new sg_image_desc { width = 320, height = 168, pixel_format = sg_pixel_format.SG_PIXELFORMAT_RGBA8, min_filter = sg_filter.SG_FILTER_NEAREST, mag_filter = sg_filter.SG_FILTER_NEAREST, usage = sg_usage.SG_USAGE_STREAM, }; img = sg_make_image(&imagedesc); }
public void QueryBufferDefaults() { var setupDesc = new sg_desc { pass_pool_size = 1 }; sg_setup(ref setupDesc); var bufferDesc = default(sg_buffer_desc); var desc = sg_query_buffer_defaults(ref bufferDesc); Assert.True(desc.type == sg_buffer_type.SG_BUFFERTYPE_VERTEXBUFFER); Assert.True(desc.usage == sg_usage.SG_USAGE_IMMUTABLE); bufferDesc = new sg_buffer_desc { type = sg_buffer_type.SG_BUFFERTYPE_INDEXBUFFER }; desc = sg_query_buffer_defaults(ref bufferDesc); Assert.True(desc.type == sg_buffer_type.SG_BUFFERTYPE_INDEXBUFFER); Assert.True(desc.usage == sg_usage.SG_USAGE_IMMUTABLE); bufferDesc = new sg_buffer_desc { usage = sg_usage.SG_USAGE_DYNAMIC }; desc = sg_query_buffer_defaults(ref bufferDesc); Assert.True(desc.type == sg_buffer_type.SG_BUFFERTYPE_VERTEXBUFFER); Assert.True(desc.usage == sg_usage.SG_USAGE_DYNAMIC); sg_shutdown(); }
public void AllocFailDestroyBuffers() { var setupDesc = new sg_desc { buffer_pool_size = 3 }; sg_setup(ref setupDesc); var isValidAfterSetup = sg_isvalid(); Assert.True(isValidAfterSetup); var buffers = stackalloc sg_buffer[3]; sg_resource_state bufferState; for (var i = 0; i < 3; i++) { buffers[i] = sg_alloc_buffer(); Assert.True(buffers[i].id != SG_INVALID_ID); bufferState = sg_query_buffer_state(buffers[i]); Assert.True(bufferState == sg_resource_state.SG_RESOURCESTATE_ALLOC); } var invalidBuffer = sg_alloc_buffer(); Assert.True(invalidBuffer.id == SG_INVALID_ID); bufferState = sg_query_buffer_state(invalidBuffer); Assert.True(bufferState == sg_resource_state.SG_RESOURCESTATE_INVALID); for (var i = 0; i < 3; i++) { sg_fail_buffer(buffers[i]); bufferState = sg_query_buffer_state(buffers[i]); Assert.True(bufferState == sg_resource_state.SG_RESOURCESTATE_FAILED); } for (var i = 0; i < 3; i++) { sg_destroy_buffer(buffers[i]); bufferState = sg_query_buffer_state(buffers[i]); Assert.True(bufferState == sg_resource_state.SG_RESOURCESTATE_INVALID); } sg_shutdown(); }
public void AllocFailDestroyImages() { var setupDesc = new sg_desc { image_pool_size = 3 }; sg_setup(ref setupDesc); var isValidAfterSetup = sg_isvalid(); Assert.True(isValidAfterSetup); var images = stackalloc sg_image[3]; sg_resource_state imageState; for (var i = 0; i < 3; i++) { images[i] = sg_alloc_image(); Assert.True(images[i].id != SG_INVALID_ID); imageState = sg_query_image_state(images[i]); Assert.True(imageState == sg_resource_state.SG_RESOURCESTATE_ALLOC); } var invalidImage = sg_alloc_image(); Assert.True(invalidImage.id == SG_INVALID_ID); imageState = sg_query_image_state(invalidImage); Assert.True(imageState == sg_resource_state.SG_RESOURCESTATE_INVALID); for (var i = 0; i < 3; i++) { sg_fail_image(images[i]); imageState = sg_query_image_state(images[i]); Assert.True(imageState == sg_resource_state.SG_RESOURCESTATE_FAILED); } for (var i = 0; i < 3; i++) { sg_destroy_image(images[i]); imageState = sg_query_image_state(invalidImage); Assert.True(imageState == sg_resource_state.SG_RESOURCESTATE_INVALID); } sg_shutdown(); }
public void AllocFailDestroyPasses() { var setupDesc = new sg_desc { pass_pool_size = 3 }; sg_setup(ref setupDesc); var isValidAfterSetup = sg_isvalid(); Assert.True(isValidAfterSetup); var passes = stackalloc sg_pass[3]; sg_resource_state passState; for (var i = 0; i < 3; i++) { passes[i] = sg_alloc_pass(); Assert.True(passes[i].id != SG_INVALID_ID); passState = sg_query_pass_state(passes[i]); Assert.True(passState == sg_resource_state.SG_RESOURCESTATE_ALLOC); } var invalidPass = sg_alloc_pass(); Assert.True(invalidPass.id == SG_INVALID_ID); passState = sg_query_pass_state(invalidPass); Assert.True(passState == sg_resource_state.SG_RESOURCESTATE_INVALID); for (var i = 0; i < 3; i++) { sg_fail_pass(passes[i]); passState = sg_query_pass_state(passes[i]); Assert.True(passState == sg_resource_state.SG_RESOURCESTATE_FAILED); } for (var i = 0; i < 3; i++) { sg_destroy_pass(passes[i]); passState = sg_query_pass_state(invalidPass); Assert.True(passState == sg_resource_state.SG_RESOURCESTATE_INVALID); } sg_shutdown(); }
public void GenerationCounter() { var setupDesc = new sg_desc { pass_pool_size = 1 }; sg_setup(ref setupDesc); var data = stackalloc float[4]; data[0] = 1.0f; data[1] = 2.0f; data[2] = 3.0f; data[4] = 4.0f; for (var i = 0; i < 64; i++) { var desc = new sg_buffer_desc { size = sizeof(float) * 4, content = data }; var buffer = sg_make_buffer(ref desc); Assert.True(buffer.id != SG_INVALID_ID); var bufferState = sg_query_buffer_state(buffer); Assert.True(bufferState == sg_resource_state.SG_RESOURCESTATE_VALID); Assert.True(buffer.id >> 16 == (uint)(i + 1)); sg_destroy_buffer(buffer); bufferState = sg_query_buffer_state(buffer); Assert.True(bufferState == sg_resource_state.SG_RESOURCESTATE_INVALID); } sg_shutdown(); }
public void QueryDesc() { var setupDesc = new sg_desc { buffer_pool_size = 1024, shader_pool_size = 128, pass_pool_size = 64 }; sg_setup(ref setupDesc); var desc = sg_query_desc(); Assert.True(desc.buffer_pool_size == 1024); Assert.True(desc.image_pool_size == _SG_DEFAULT_IMAGE_POOL_SIZE); Assert.True(desc.shader_pool_size == 128); Assert.True(desc.pipeline_pool_size == _SG_DEFAULT_PIPELINE_POOL_SIZE); Assert.True(desc.pass_pool_size == 64); Assert.True(desc.context_pool_size == _SG_DEFAULT_CONTEXT_POOL_SIZE); Assert.True(desc.mtl_global_uniform_buffer_size == _SG_MTL_DEFAULT_UB_SIZE); Assert.True(desc.mtl_sampler_cache_size == _SG_MTL_DEFAULT_SAMPLER_CACHE_CAPACITY); sg_shutdown(); }
public void QueryDesc() { var setupDesc = new sg_desc { buffer_pool_size = 1024, shader_pool_size = 128, pass_pool_size = 64 }; sg_setup(&setupDesc); var desc = sg_query_desc(); Assert.True(desc.buffer_pool_size == 1024); Assert.True(desc.image_pool_size == 128); Assert.True(desc.shader_pool_size == 128); Assert.True(desc.pipeline_pool_size == 64); Assert.True(desc.pass_pool_size == 64); Assert.True(desc.context_pool_size == 16); Assert.True(desc.uniform_buffer_size == 4 * 1024 * 1024); Assert.True(desc.sampler_cache_size == 64); sg_shutdown(); }
public static extern void sg_setup([In] ref sg_desc desc);