最近、 CSS スプライトが流行っているおかげで、ゲームプログラミングを説明するのが楽です。ゲームのスプライトもまさにあんな感じです。
DirectX で 2D 画像を描画時、テクスチャを期待通りに画面表示するために注意すべき情報のメモです。困ったら参照してみます。
「~するためには~します」と書かれてわかったような気になるのですが、「それはどれくらいやっていいの?」という疑問が残ります。新しい技術を学ぶ際はなおさら。もし、 DirectX でこういった疑問に遭遇したら次のページがヒントになるかもしれません。
ゲーム画面を構成している最小単位はピクセルです。もし、任意の場所に任意の色でピクセルを表示し、それを必要な回数だけ繰り返せば、理論上、どんなゲーム画面でも構築することができるというのがメルマガでお伝えしている内容です。
矩形転送というのは、それを一気にやることです。四角形で一括転送するので矩形転送という呼び方なんだと思います。
絵を表示することが目的なのに転送という表現がわかりづらいかもしれませんが、絵のデータを VRAM にコピーすることによって、そのデータを(ディスプレイなどの)ピクセルに反映するわけですので、やってることは転送なんだと思います。
まどかの同人作品。先のミーティングでローディング画面に触れました。そんなにロード時間はかからない見込みですが、ロード中の画面とか作りたくなる可能性もありまして、ちょっと手法を調べておりました。
今ではだいぶ緩くなったそうですが、それでもサイズやフォーマットに制限があり、不安になるのが「このテクスチャ作れるだろうか?」という疑問です。
こういった場合、 D3DXCheckTextureRequirements() 関数を使うと、実際にテクスチャを作る前にその可否がわかります。
DirectX でテクスチャやサーフェスに読み込んだ画像のピクセル情報をコピーするためにロックという操作が必要になるのですが、これはテクスチャやサーフェスの配置アドレスが変わる可能性があり、それを一時的に止めるためとのことです。
全然試してないのでメモ程度ですが、頂点をソフトウェアで処理する方式にすると、自由なサイズのテクスチャが作れるみたいです。
私くらいの年寄りの間ではよく知られているのですが、実はテクスチャというのはビデオボードの仕様により、任意のサイズを指定できない場合が多いのです。