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; } }
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) }; }
/// <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)); }