3

こんにちは、SlimDX でスプライトを正しくレンダリングできません。.NET Drawing DrawImageUnscaled と同じように、少し拡大縮小して描画します。私は変換を使用していません。

初期化:

Vector2 position;
Sprite sprite;
Size size;
Texture texture;
sprite = new Sprite(Device);
string filename = /*some bitmap*/;
using (Image b = Bitmap.FromFile(filename))
  size = b.Size;

position = new Vector2(550, 230);
texture = Texture.FromFile(Device, filename);

レンダリング:

Device.Clear(ClearFlags.Target, Color.Black, 1.0f, 0);
Device.BeginScene();
sprite.Begin(SpriteFlags.None);
sprite.Draw(texture, new Vector3(size.Width / 2, size.Height / 2, 0), new Vector3(position, 0), Color.White);
sprite.End();
Device.EndScene();

編集:間違ったレンダリングを想像する方法がわからない場合は、レンダリングして参照するものを次に示します(その白い色は無視してください。それは単なる透明なPNGです)。最初の画像がどのようにスケーリングされているかに注目して ください

4

2 に答える 2

4

グラフィックカードでNPOTテクスチャ(2の累乗ではない)の描画に問題がある可能性はありますか。その場合は、テクスチャサイズを次のPOTに増やします。これは私にとって多くの描画の問題を解決しました(SlimDXも使用)。

ところで...私も2DレンダリングにSlimDXを使用しましたが、スプライトは使用していませんが、すべてのものを「プリミティブ」として描画し、頂点バッファーを使用しています。多分これもオプションかもしれません

于 2009-05-09T10:08:12.260 に答える
2

スプライトの初期化時にアルファ ブレンドを追加します。

于 2009-05-17T20:52:47.953 に答える