所以我使用位图来解决内存地址空间问题(或者我认为基于我的阅读),所以我想将一个内存流用于最大尺寸的图像,并在创建我需要的所有纹理时重复使用它。 / p>
然而,在完成循环并使用纹理绘制时,看起来好像所有纹理都包含相同的纹理,这让我觉得我不允许重复使用内存流。从内存创建纹理只是使纹理指向该内存位置吗?
我真的很困惑,我希望我确切知道Texture.FromMemory(device,byte [])和Texture.FromStream(设备,流)中发生了什么。
我也不知道在调用Texture.FromMemory(device,byte [],Usage,Pool)时使用的用法。
用法在此处定义:http://msdn.microsoft.com/en-us/library/windows/desktop/bb322805%28v=vs.85%29.aspx
但我真的不明白在使用该方法签名时我应该使用什么用作参数。 Usage.None结果没有显示任何内容。 Usage.Dynamic会导致存储空间不足,而Usage.WriteOnly会产生另一个神秘错误。
当我调用较短的两个参数方法Texture.FromStream(device,stream)时,Heaven知道实际使用的是什么用法。
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());