示例#1
0
        private void createUniformBuffers(VkContext context)
        {
            var bufferSize = Marshal.SizeOf <UniformBufferObject>();

            var usageFlags = Vk.BufferUsageFlags.UniformBuffer;
            var memProps   = Vk.MemoryPropertyFlags.HostVisible
                             | Vk.MemoryPropertyFlags.HostCoherent;

            var buffers = new BufferWithMemory[this.wrapper.ImageCapacity];

            for (int i = 0; i < this.wrapper.ImageCapacity; i++)
            {
                try {
                    buffers[i] = VkHelper.CreateBuffer(context, bufferSize, usageFlags,
                                                       memProps, this.wrapper.SharingMode);
                } catch (Vk.ResultException result) {
                    throw new VkException($"An error occurred while creating uniform buffer {i}.", result);
                }
            }

            this.wrapper.UniformBuffers       = new Vk.Buffer[this.wrapper.ImageCapacity];
            this.wrapper.UniformBuffersMemory = new Vk.DeviceMemory[this.wrapper.ImageCapacity];

            for (int i = 0; i < this.wrapper.ImageCapacity; i++)
            {
                this.wrapper.UniformBuffers[i]       = buffers[i].Buffer;
                this.wrapper.UniformBuffersMemory[i] = buffers[i].Memory;
            }
        }