コード例 #1
0
        internal ShaderModule(Device parent, ref ShaderModuleCreateInfo createInfo, ref AllocationCallbacks?allocator)
        {
            Parent    = parent;
            Allocator = allocator;

            fixed(byte *codePtr = createInfo.Code)
            {
                createInfo.ToNative(out ShaderModuleCreateInfo.Native nativeCreateInfo, codePtr);
                long   handle;
                Result result = vkCreateShaderModule(Parent, &nativeCreateInfo, NativeAllocator, &handle);

                VulkanException.ThrowForInvalidResult(result);
                Handle = handle;
            }
        }
コード例 #2
0
        public Shader()
        {
            _device = SpectrumApp.Instance.GraphicsDevice;

            // Create modules
            Vk.ShaderModuleCreateInfo ci = new Vk.ShaderModuleCreateInfo(VERT_BC);
            VertexModule   = _device.VkDevice.CreateShaderModule(ci);
            ci.Code        = FRAG_BC;
            FragmentModule = _device.VkDevice.CreateShaderModule(ci);

            // Create pipeline infos
            CreateInfo = new Vk.PipelineShaderStageCreateInfo[2] {
                new Vk.PipelineShaderStageCreateInfo(Vk.ShaderStages.Vertex, VertexModule, "main", null),
                new Vk.PipelineShaderStageCreateInfo(Vk.ShaderStages.Fragment, FragmentModule, "main", null)
            };
        }
コード例 #3
0
 /// <summary>
 /// Creates a new shader module object.
 /// </summary>
 /// <param name="createInfo">
 /// The structure containing information of a newly created shader module.
 /// </param>
 /// <param name="allocator">Controls host memory allocation.</param>
 /// <returns>Resulting shader module object.</returns>
 /// <exception cref="VulkanException">Vulkan returns an error code.</exception>
 public ShaderModule CreateShaderModule(ShaderModuleCreateInfo createInfo, AllocationCallbacks?allocator = null)
 {
     return(new ShaderModule(this, ref createInfo, ref allocator));
 }