Пример #1
0
        public void Draw(VKImage image, float tick)
        {
            var vp = new ViewProjection {
                View = View, Projection = Projection
            };

            UProjection.Write(ref vp);
            UTime.Write(ref tick);

            var cb = CBuffer[image];

            cb.Begin();
            cb.BeginPass(Pipeline);
            for (var i = 0; i < MaxUniqueMeshes; i++)
            {
                var count = Count[i];
                if (count > 0)
                {
                    cb.Draw(Meshes[i], Instances[i], count);
                }
            }
            cb.EndPass();
            cb.End();

            cb.Submit(true);
            cb.Reset();
        }
 public CommandBufferController(Graphics g, VKImage image)
 {
     Graphics      = g;
     Context       = g.Context;
     Image         = image;
     CommandBuffer = Context.GraphicsCommandPool.AllocateBuffers(
         new CommandBufferAllocateInfo(CommandBufferLevel.Primary, 1)
         )[0];
 }
Пример #3
0
 private Texture2D(Context ctx, Image image, DeviceMemory memory, ImageView view, Format format, Vector2I size, bool renderTarget)
 {
     Context        = ctx;
     Image          = new VKImage(ctx, image, format, size, view);
     Memory         = memory;
     View           = view;
     Format         = format;
     Size           = size;
     SizeF          = (Vector2)Size;
     IsRenderTarget = renderTarget;
     if (IsRenderTarget)
     {
         Image.CreateDepthStencil();
     }
 }
Пример #4
0
        internal void CacheSwapchainImages()
        {
            if (SwapchainImages != null)
            {
                foreach (var img in SwapchainImages)
                {
                    img.DisposeExceptImages();
                }
            }
            var imgs = Swapchain.GetImages();

            SwapchainImages = new VKImage[imgs.Length];
            for (var i = 0; i < imgs.Length; i++)
            {
                SwapchainImages[i] = new VKImage(this, imgs[i], Swapchain.Format, Window.FrameBufferSize);
                SwapchainImages[i].CreateDepthStencil();
            }
        }
Пример #5
0
 protected virtual void OnDrawToSwapchainImage(VKImage image)
 {
 }
Пример #6
0
 protected virtual void OnDeleteSwapchainImage(VKImage image)
 {
 }
Пример #7
0
 protected virtual void OnCreateSwapchainImage(VKImage image)
 {
 }
Пример #8
0
 public void RemoveImage(VKImage image)
 {
     CBuffer[image].Dispose();
     CBuffer.Remove(image);
 }
Пример #9
0
        public void AddImage(VKImage image)
        {
            var cb = new CommandBufferController(Graphics, image);

            CBuffer.Add(image, cb);
        }