C# SharpDX创建纹理后,Texture.FromMemory是否要求不更改内存位置?
因此,我在使用位图时遇到了内存地址空间问题(或者我认为是基于我的阅读),因此我想使用一个memorystream来处理最大尺寸的图像,并在创建所需的所有纹理时重用它 但是,在完成循环并使用纹理绘制时,所有纹理似乎都包含相同的纹理,这使我认为不允许重用memorystream。从内存创建纹理是否只是使纹理指向该内存位置 我真的很困惑,我希望我能确切地知道Texture.FromMemory(设备,字节[])和Texture.FromStream(设备,流)中发生了什么 我也不知道调用Texture.FromMemory(设备,字节[],用法,池)时使用什么用法 用法定义如下: 但我真的不明白在使用该方法签名时,应该使用什么用法作为参数。用法。无将不显示任何内容。Usage.Dynamic会导致存储空间不足,Usage.WriteOnly会给出另一个隐藏错误 当我调用较短的两参数方法Texture.FromStream(device,stream)时,天知道默认用法是什么C# SharpDX创建纹理后,Texture.FromMemory是否要求不更改内存位置?,c#,c++,directx,sharpdx,C#,C++,Directx,Sharpdx,因此,我在使用位图时遇到了内存地址空间问题(或者我认为是基于我的阅读),因此我想使用一个memorystream来处理最大尺寸的图像,并在创建所需的所有纹理时重用它 但是,在完成循环并使用纹理绘制时,所有纹理似乎都包含相同的纹理,这使我认为不允许重用memorystream。从内存创建纹理是否只是使纹理指向该内存位置 我真的很困惑,我希望我能确切地知道Texture.FromMemory(设备,字节[])和Texture.FromStream(设备,流)中发生了什么 我也不知道调用Texture
MemoryStream BitmapStream=新的MemoryStream();
对于(int y=0;y
这是DirectX 9,对吗?不要将其与DX11混淆。您已链接到DX11用法
文档。DX9的默认值为D3DX\u默认值
。FromStream()
基本上执行您已经执行的操作。它读取流,然后使用内存中的
。请参阅。
MemoryStream BitmapStream = new MemoryStream();
for (int y = 0; y < OriginalBitmap.Height; y += MaxHeight)
{
for (int x = 0; x < OriginalBitmap.Width; x += MaxWidth)
{
Bitmap NewBitmap = OriginalBitmap.Clone(RegionToClone, OriginalBitmap.PixelFormat);
Bitmaps.Add(NewBitmap);
BitmapStream.Position= 0;
NewBitmap.Save(BitmapStream, System.Drawing.Imaging.ImageFormat.Bmp);
BitmapStream.Position = 0;
Texture t = Texture.FromMemory(device, BitmapStream.GetBuffer());