Пример #1
0
        public GraphicsPipeline(Device device, GraphicsPipelineCreateInfo info, PipelineCache cache)
        {
            if (device == null)
            {
                throw new ArgumentNullException(nameof(device));
            }
            if (info == null)
            {
                throw new ArgumentNullException(nameof(info));
            }

            Device = device;

            VkPipelineCache nativeCache = VkPipelineCache.Null;

            if (cache != null)
            {
                nativeCache = cache.Native;
            }

            pipeline = CreatePipelinesInternal(device, new GraphicsPipelineCreateInfo[] { info }, nativeCache)[0];
        }
Пример #2
0
        public static ComputePipeline[] CreatePipelines(Device device, ComputePipelineCreateInfo[] infos, PipelineCache cache)
        {
            if (device == null)
            {
                throw new ArgumentNullException(nameof(device));
            }
            if (infos == null)
            {
                throw new ArgumentNullException(nameof(infos));
            }

            VkPipelineCache nativeCache = VkPipelineCache.Null;

            if (cache != null)
            {
                nativeCache = cache.Native;
            }

            var pipelines = new ComputePipeline[infos.Length];
            var natives   = ComputePipeline.CreatePipelinesInternal(device, infos, nativeCache);

            for (int i = 0; i < infos.Length; i++)
            {
                pipelines[i] = new ComputePipeline(device, natives[i]);
            }

            return(pipelines);
        }