誰でも最後まで読めるかといわれると難しいかもしれませんが(自分は無理でした)、冒頭部分は基礎からの解説で、実際に使われている 3D 技術の入門書用途に最適と感じました。
DirectX で 2D 画像を描画時、テクスチャを期待通りに画面表示するために注意すべき情報のメモです。困ったら参照してみます。
「~するためには~します」と書かれてわかったような気になるのですが、「それはどれくらいやっていいの?」という疑問が残ります。新しい技術を学ぶ際はなおさら。もし、 DirectX でこういった疑問に遭遇したら次のページがヒントになるかもしれません。
ゲーム画面を構成している最小単位はピクセルです。もし、任意の場所に任意の色でピクセルを表示し、それを必要な回数だけ繰り返せば、理論上、どんなゲーム画面でも構築することができるというのがメルマガでお伝えしている内容です。
矩形転送というのは、それを一気にやることです。四角形で一括転送するので矩形転送という呼び方なんだと思います。
絵を表示することが目的なのに転送という表現がわかりづらいかもしれませんが、絵のデータを VRAM にコピーすることによって、そのデータを(ディスプレイなどの)ピクセルに反映するわけですので、やってることは転送なんだと思います。
今ではだいぶ緩くなったそうですが、それでもサイズやフォーマットに制限があり、不安になるのが「このテクスチャ作れるだろうか?」という疑問です。
こういった場合、 D3DXCheckTextureRequirements() 関数を使うと、実際にテクスチャを作る前にその可否がわかります。
DirectX でテクスチャやサーフェスに読み込んだ画像のピクセル情報をコピーするためにロックという操作が必要になるのですが、これはテクスチャやサーフェスの配置アドレスが変わる可能性があり、それを一時的に止めるためとのことです。
全然試してないのでメモ程度ですが、頂点をソフトウェアで処理する方式にすると、自由なサイズのテクスチャが作れるみたいです。
今、作っているゲームのクラス階層の中に Sprite というクラスを考えたのですが、スプライトにも要件があるようです。
あれ、ゲームプログラミングを教えるのにすごく便利なんです!
以前どこかの書籍で見かけて以来その詳細が不明でしたが、今日見つけました。
DirectX で計算済みの頂点を使うためには D3DFVF_XYZRHW を含んだ定数 D3DFVF_TLVERTEX を作ってデバイスの頂点フォーマットに指定します。