Пример #1
0
        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);
        }
Пример #2
0
        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));
        }
Пример #3
0
        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);
        }