如何制作指向图像的指针,以便将其用作纹理?
这是代码:
device.BeginScene();
sprite.Begin(SlimDX.Direct3D9.SpriteFlags.None);
var newImage = Image.FromStream(ms);
tx = SlimDX.Direct3D9.Texture.FromPointer((IntPtr)newImage);
form.Size = newImage.Size;
sprite.Draw(tx, Color.Transparent);
sprite.End();
device.EndScene();
device.Present();
正如您可能猜到的那样,它不起作用。但我想从图像中制作一个指针,或者很好地指向图像。因为我需要稍后重用图像变量,所以Texture.FromStream
它不起作用,因为它只允许我使用一次。
编辑:
混乱的图像:
device.BeginScene();
sprite.Begin(SlimDX.Direct3D9.SpriteFlags.None);
tx = SlimDX.Direct3D9.Texture.FromStream(device, ms, SlimDX.Direct3D9.Usage.None, SlimDX.Direct3D9.Pool.Managed);
sprite.Draw(tx, Color.Transparent);
sprite.End();
tx.Dispose();
device.EndScene();
device.Present();
但是,如果我将纹理更改为此:
tx = SlimDX.Direct3D9.Texture.FromStream(device, ms, 0, 0, 0, SlimDX.Direct3D9.Usage.None, SlimDX.Direct3D9.Format.A8R8G8B8, SlimDX.Direct3D9.Pool.Managed, SlimDX.Direct3D9.Filter.None, SlimDX.Direct3D9.Filter.None, 0);
它可以工作(注意到现在我可以将大小设置为 0,我猜这意味着默认值)。
但我在这里不明白的是格式,有数百种不同的格式。我不知道哪个是 GPU 最快的还是原生的;S
还有一件事,我怎样才能得到纹理的大小?因为我希望我的表单在更改时调整为纹理大小。
编辑2:
好吧,似乎 0,0 大小只是使纹理拉伸到窗口;S