From 178a5ea3cfa4ce4ccbcd9e0b6726a8cda791c810 Mon Sep 17 00:00:00 2001 From: cosmonaut Date: Tue, 27 Feb 2024 00:42:53 -0800 Subject: [PATCH] some tweaks to ResourceUploader --- src/Graphics/ResourceUploader.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/Graphics/ResourceUploader.cs b/src/Graphics/ResourceUploader.cs index c4f426c..938872e 100644 --- a/src/Graphics/ResourceUploader.cs +++ b/src/Graphics/ResourceUploader.cs @@ -47,9 +47,11 @@ namespace MoonWorks.Graphics /// /// Prepares upload of data into a GpuBuffer. /// - public void SetBufferData(GpuBuffer buffer, uint bufferOffset, Span data) where T : unmanaged + public void SetBufferData(GpuBuffer buffer, uint bufferOffsetInElements, Span data) where T : unmanaged { - var lengthInBytes = (uint) (Marshal.SizeOf() * data.Length); + uint elementSize = (uint) Marshal.SizeOf(); + uint offsetInBytes = elementSize * bufferOffsetInElements; + uint lengthInBytes = (uint) (elementSize * data.Length); uint resourceOffset; fixed (void* spanPtr = data) @@ -57,12 +59,19 @@ namespace MoonWorks.Graphics resourceOffset = CopyData(spanPtr, lengthInBytes); } - var bufferCopyParams = new BufferCopy(resourceOffset, bufferOffset, lengthInBytes); + var bufferCopyParams = new BufferCopy(resourceOffset, offsetInBytes, lengthInBytes); BufferUploads.Add((buffer, bufferCopyParams)); } // Textures + public Texture CreateTexture2D(Span pixelData, uint width, uint height) + { + var texture = Texture.CreateTexture2D(Device, width, height, TextureFormat.R8G8B8A8, TextureUsageFlags.Sampler); + SetTextureData(texture, pixelData); + return texture; + } + /// /// Creates a 2D Texture from compressed image data to be uploaded. ///