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

もう1つ、テクスチャのサイズを取得するにはどうすればよいですか? フォームが変更された場合、テクスチャのサイズに合わせてフォームのサイズを変更したいので。

編集2:

0,0 サイズでは、テクスチャがウィンドウに引き伸ばされているようです;S

4

0 に答える 0