トップ «前の日記(2006-06-17 [土]) 最新 次の日記(2006-06-19 [月])» 編集

SewiGの日記

2004|01|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|

2006-06-18 [日] [長年日記]

[Programming][C#] C#で2D Programming on Direct3D (3)

今度はスプライトを使用した例。Microsoft.DirectX.Direct3D.Spriteです。スプライトを使用すれば、頂点情報を利用することなく、テクスチャと座標から2次元サーフェイスに画像を描画できます。

→ ソースコード (csmdx_sprt.zip, 2006/06/20 微修正)

スプライトオブジェクトを生成。

Sprite sprite = new Sprite(device);

これだけ。

あとは、device.BeginScene()のあとでスプライトを描画。

sprite.Begin(SpriteFlags.AlphaBlend);
sprite.Draw2D(texture, center, 0, new Point(x, y), Color.FromArgb(0xFF, 0xFF, 0xFF, 0xFF));
sprite.End();

スプライトも、3Dに似たようなBeginとEndがあって、この間で描画していきます。Draw2Dの第1引数はテクスチャ、第4引数は描画する座標、第5引数はスプライトの透過色。第2、3引数は回転に関するものです。無駄に多機能w 第2引数は回転軸の座標、第3引数は回転角度(ラジアン)を指定します。回転しない場合は0ですね。

2D描画はこんな感じですかね。間違ってもテクスチャを秒間何フレームも書き換えないでください。テクスチャの張替えはコストが掛かります。実際fpsも出ません。


Copyright © 2004-2008 SewiG All rights reserved.