0

如何制作指向图像的指针,以便将其用作纹理?

这是代码:

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

4

0 回答 0