コード例 #1
0
    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);
    }
コード例 #2
0
ファイル: PInvokeTests.cs プロジェクト: fossabot/Sokol.NET
        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();
        }
コード例 #3
0
ファイル: PInvokeTests.cs プロジェクト: fossabot/Sokol.NET
        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();
        }
コード例 #4
0
ファイル: PInvokeTests.cs プロジェクト: fossabot/Sokol.NET
        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();
        }
コード例 #5
0
ファイル: PInvokeTests.cs プロジェクト: fossabot/Sokol.NET
        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();
        }
コード例 #6
0
ファイル: PInvokeTests.cs プロジェクト: fossabot/Sokol.NET
        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();
        }
コード例 #7
0
ファイル: PInvokeTests.cs プロジェクト: fossabot/Sokol.NET
        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();
        }
コード例 #8
0
        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();
        }
コード例 #9
0
ファイル: sokol_gfx.cs プロジェクト: fossabot/Sokol.NET
 public static extern void sg_setup([In] ref sg_desc desc);