Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SharpDX创建纹理后,Texture.FromMemory是否要求不更改内存位置?_C#_C++_Directx_Sharpdx - Fatal编程技术网

C# SharpDX创建纹理后,Texture.FromMemory是否要求不更改内存位置?

C# SharpDX创建纹理后,Texture.FromMemory是否要求不更改内存位置?,c#,c++,directx,sharpdx,C#,C++,Directx,Sharpdx,因此,我在使用位图时遇到了内存地址空间问题(或者我认为是基于我的阅读),因此我想使用一个memorystream来处理最大尺寸的图像,并在创建所需的所有纹理时重用它 但是,在完成循环并使用纹理绘制时,所有纹理似乎都包含相同的纹理,这使我认为不允许重用memorystream。从内存创建纹理是否只是使纹理指向该内存位置 我真的很困惑,我希望我能确切地知道Texture.FromMemory(设备,字节[])和Texture.FromStream(设备,流)中发生了什么 我也不知道调用Texture

因此,我在使用位图时遇到了内存地址空间问题(或者我认为是基于我的阅读),因此我想使用一个memorystream来处理最大尺寸的图像,并在创建所需的所有纹理时重用它

但是,在完成循环并使用纹理绘制时,所有纹理似乎都包含相同的纹理,这使我认为不允许重用memorystream。从内存创建纹理是否只是使纹理指向该内存位置

我真的很困惑,我希望我能确切地知道Texture.FromMemory(设备,字节[])和Texture.FromStream(设备,流)中发生了什么

我也不知道调用Texture.FromMemory(设备,字节[],用法,池)时使用什么用法

用法定义如下:

但我真的不明白在使用该方法签名时,应该使用什么用法作为参数。用法。无将不显示任何内容。Usage.Dynamic会导致存储空间不足,Usage.WriteOnly会给出另一个隐藏错误

当我调用较短的两参数方法Texture.FromStream(device,stream)时,天知道默认用法是什么

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());