private void PlatformConstruct( GraphicsDevice graphicsDevice, ResourceUploadBatch uploadBatch, T[] data, uint sizeInBytes) { DeviceBuffer = AddDisposable(graphicsDevice.Device.CreateCommittedResource( new HeapProperties(HeapType.Default), HeapFlags.None, ResourceDescription.Buffer(SizeInBytes), ResourceStates.CopyDestination)); uploadBatch.Upload( DeviceBuffer, new[] { new ResourceUploadData <T> { Data = data, BytesPerRow = (int)sizeInBytes } }); uploadBatch.Transition( DeviceBuffer, ResourceStates.CopyDestination, ResourceStates.VertexAndConstantBuffer); }
public static StaticBuffer <T> Create <T>( GraphicsDevice graphicsDevice, ResourceUploadBatch uploadBatch, T[] data) where T : struct { var elementSizeInBytes = Marshal.SizeOf <T>(); return(new StaticBuffer <T>( graphicsDevice, (uint)elementSizeInBytes, (uint)data.Length, uploadBatch, data)); }
private void PlatformConstruct( GraphicsDevice graphicsDevice, ResourceUploadBatch uploadBatch, PixelFormat pixelFormat, int width, int height, TextureMipMapData[] mipMapData) { var resourceDescription = ResourceDescription.Texture2D( pixelFormat.ToDxgiFormat(), width, height, mipLevels: (short)mipMapData.Length); DeviceResource = AddDisposable(graphicsDevice.Device.CreateCommittedResource( new HeapProperties(HeapType.Default), HeapFlags.None, resourceDescription, ResourceStates.CopyDestination)); var uploadData = new ResourceUploadData <byte> [mipMapData.Length]; for (var i = 0; i < mipMapData.Length; i++) { uploadData[i] = new ResourceUploadData <byte> { Data = mipMapData[i].Data, BytesPerRow = mipMapData[i].BytesPerRow }; } uploadBatch.Upload( DeviceResource, uploadData); uploadBatch.Transition( DeviceResource, ResourceStates.CopyDestination, ResourceStates.NonPixelShaderResource | ResourceStates.PixelShaderResource); }