Exemplo n.º 1
0
        static void Main(string[] args)
        {
            Console.WriteLine("HELLO WORLD");

            try
            {
                using (var container = new SimpleInjector.Container())
                {
                    // Magnesium
                    container.Register <Magnesium.MgDriverContext>(Lifestyle.Singleton);

                    // Magnesium.VUlkan
                    container.Register <Magnesium.IMgEntrypoint, Magnesium.Vulkan.VkEntrypoint>(Lifestyle.Singleton);
                    container.Register <Magnesium.IMgImageTools, Magnesium.MgImageTools>(Lifestyle.Singleton);

                    container.Register <IKTXTextureLoader, KTXTextureManager>(Lifestyle.Singleton);
                    container.Register <IMgTextureGenerator, MgStagingBufferOptimizer>(Lifestyle.Singleton);
                    container.Register <IMgGraphicsConfiguration, MgDefaultGraphicsConfiguration>(Lifestyle.Singleton);
                    container.Register <IMgPresentationSurface, MgNullSurface>(Lifestyle.Singleton);

                    using (var driver = container.GetInstance <Magnesium.MgDriverContext>())
                    {
                        driver.Initialize(
                            new MgApplicationInfo
                        {
                            ApplicationName    = "Vulkan Example",
                            ApiVersion         = MgApplicationInfo.GenerateApiVersion(1, 0, 17),
                            ApplicationVersion = 1,
                            EngineName         = "Magnesium",
                            EngineVersion      = 1,
                        },
                            MgInstanceExtensionOptions.ALL);


                        using (var scope = new SimpleInjector.Scope(container))
                        {
                            var configuration = container.GetInstance <IMgGraphicsConfiguration>();
                            configuration.Initialize(0, 0);

                            IKTXTextureLoader loader = container.GetInstance <IKTXTextureLoader>();
                            using (var fs = System.IO.File.OpenRead("1.ktx"))
                            {
                                var result = loader.Load(fs);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
Exemplo n.º 2
0
        public static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            try
            {
                var entrypoint = new VkEntrypoint();


                IMgAllocationCallbacks callback = entrypoint.CreateAllocationCallbacks();
                callback.PfnInternalAllocation = DebugInternalAllocation;
                callback.PfnAllocation         = DebugAllocateFunction;
                callback.PfnReallocation       = DebugReallocationFunction;
                callback.PfnInternalFree       = DebugInternalFree;
                callback.PfnFree = null;

                using (var driver = new MgDriver(entrypoint))
                {
                    driver.Initialize(new MgApplicationInfo
                    {
                        ApiVersion         = MgApplicationInfo.GenerateApiVersion(1, 0, 17),
                        ApplicationName    = "InstanceDemo",
                        ApplicationVersion = 1,
                        EngineName         = "Magnesium.Vulkan",
                        EngineVersion      = 1,
                    },
                                      MgEnableExtensionsOption.ALL);

                    using (var device = driver.CreateLogicalDevice(null, MgEnableExtensionsOption.ALL))
                    {
                        if (device.Queues.Length > 0)
                        {
                            Console.WriteLine(nameof(device.Queues.Length) + " : " + device.Queues.Length);

                            using (var partition = device.Queues[0].CreatePartition())
                            {
                                IMgBuffer buffer;
                                var       result = partition.Device.CreateBuffer(new MgBufferCreateInfo {
                                    SharingMode = MgSharingMode.EXCLUSIVE, Size = 1024, Usage = MgBufferUsageFlagBits.VERTEX_BUFFER_BIT
                                }, callback, out buffer);
                                buffer.DestroyBuffer(partition.Device, callback);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
Exemplo n.º 3
0
        public static void Main(string[] args)
        {
            try
            {
                var entrypoint = new VkEntrypoint();


                using (var driver = new MgDriverContext(entrypoint))
                {
                    driver.Initialize(new MgApplicationInfo
                    {
                        ApiVersion         = MgApplicationInfo.GenerateApiVersion(1, 0, 17),
                        ApplicationName    = "InstanceDemo",
                        ApplicationVersion = 1,
                        EngineName         = "Magnesium.Vulkan",
                        EngineVersion      = 1,
                    },
                                      MgInstanceExtensionOptions.ALL);

                    using (var device = driver.CreateLogicalDevice(null, MgDeviceExtensionOptions.SWAPCHAIN_ONLY, MgQueueAllocation.One, MgQueueFlagBits.GRAPHICS_BIT | MgQueueFlagBits.COMPUTE_BIT))
                    {
                        if (device.Queues.Length > 0)
                        {
                            Console.WriteLine(nameof(device.Queues.Length) + " : " + device.Queues.Length);

                            using (var partition = device.Queues[0].CreatePartition(0))
                            {
                                IMgBuffer buffer;
                                var       result = partition.Device.CreateBuffer(new MgBufferCreateInfo {
                                    SharingMode = MgSharingMode.EXCLUSIVE, Size = 1024, Usage = MgBufferUsageFlagBits.VERTEX_BUFFER_BIT
                                }, null, out buffer);
                                buffer.DestroyBuffer(partition.Device, null);
                            }
                        }
                    }
                    Console.WriteLine("NO ERRORS!");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                throw ex;
            }
        }