XNA4.0でテクスチャ・マッピング

(XNA4.0 => Game Studio (Express) XNA GS 4.0)

Primitives3D
http://create.msdn.com/ja-JP/education/catalog/sample/primitives_3d
を参考に、コピペでたたき台を作りこれを改造(テクスチャ・マッピングを追加)する過程でXNAコードの基本構造の習得を試みた。

基本構造

public class Game1 : Microsoft.Xna.Framework.Game
のように基底Gameクラスを継承して、以下のメソッドに処理を実装していく。

protected override void Draw(GameTime gameTime) // 描画。フレームごとに呼び出される。背景、前景、その他。
protected override void Update(GameTime gameTime) // ワールドの更新など、ゲームのアップデートロジックを置く。
protected override void UnloadContent() // アンロードの処理を置くが、通常はあえて書くほどでもないようだ。
protected override void LoadContent() // ゲームごとに最初に?1回?呼び出される。
頂点、インデックス、エフェクトなどの設定を行う。
ちなみにテクスチャとして使用する画像(JPEG, BMPなど)をファイルから読み込むには、下のコンテンツ・プロジェクトへの追加を前提に、
myTexture = Content.Load("Ane1"); // "Ane1"はアセット名、つまりコンテンツ追加時に付けた(自動で付いた)名前
などとしてオブジェクト変数に読み込み、適切なオブジェクトと関連付ける。


「テクスチャ・マッピングの利用」

XNA4.0で新規ソリューションを作成すると、
プロジェクトが2つできるのだが、コンテンツ・プロジェクトのほうにコンテンツとして画像を登録することができ、これをテクスチャとして使用した。

方法:コンテンツ プロジェクトへのゲーム アセットの追加
http://msdn.microsoft.com/ja-jp/library/bb313966.aspx


Primitives3Dサンプルは各種図形プリミティブを例示しているが、今回は基本的な図形として立方体(CubePrimitiveクラス)を選び、たたき台とした。
これはGeometricPrimitiveクラスを継承する。このGeometricPrimitiveにフィールドとして
private Texture2D texture;
を持たせ、エフェクトとして利用するようにした。




トラブル解決にDirect3Dデバッグ・ランタイムが役に立つようだが、現在でも通用するのかはまだ試していない。
http://www.atmarkit.co.jp/fdotnet/directxworld/directxworld04/directxworld04_02.html

(本日のソースの状態)https://github.com/sakujyo/XNAStudy1