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]; }
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(); } }
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(); } }
protected virtual void OnDrawToSwapchainImage(VKImage image) { }
protected virtual void OnDeleteSwapchainImage(VKImage image) { }
protected virtual void OnCreateSwapchainImage(VKImage image) { }
public void RemoveImage(VKImage image) { CBuffer[image].Dispose(); CBuffer.Remove(image); }
public void AddImage(VKImage image) { var cb = new CommandBufferController(Graphics, image); CBuffer.Add(image, cb); }