3Dグラフィックスが動いた日
2005年 07月 10日
すごいです。びっくりです。
PSPで3Dグラフィックスが動きました(^o^)
ばんざーい!(...いや、私が作ったわけじゃ
ないんだけど)
PSPSDK(ベータ1じゃなくて、開発中のやつね)のサンプル
にはGU(PSPのグラフィックスチップの事です)のものも
含まれています。その中に”cube"というのがあります。
この"cube"は6面カラフルな立方体に各面にバンプマップ
(わかんない人はお父さん、お母さんに聞いてみよう)を施した
ものをくるくる回すでものです。
...それが何?っていうなかれ、今までPSPのGUに関しては
ハッキン...いや、調査が進んででおらず、訳の判んないもの
として利用されていませんでした。PSPSDKが出るまでの
プログラミングってビデオラム(VRAM)の先頭アドレスを
取得してそこに、画像データを書き込むという事しかできず
(たいがいそれでいいんですが...)。PSPの無駄に強力な
ハードウエアは利用できなかったんです。これからは、みんな
GUの機能を使ったソフトを作るんだろうなぁ...楽しみです。
で、このサンプル弄んでわかった事書きますね(^o^)
・ テクスチャーに使用される画像ファイルは.ROWファイルです
フォトショップで編集できるよ(^o^)
・ .ROWファイルはbin2cコマンドでC言語の配列データとして
変換する事が可能です。サンプルのMakefaile見れば使い方
わかります。
・ GUに送信するGUアセンブリ(コマンドみたいの)はコマンドリスト
として事前に用意したコマンドリスト配列変数にGU用のライブラリ
関数経由でセットします。描画の直前にコマンドリスト変巣はDMA
転送でGUに送られます。そこで注意なのが、DMA転送に都合の
よい境界サイズでこのコマンドリスト配列を用意するのがポイント!
・ GUに対して、座標やベクトルの計算を行うためのGE(ジオメトリ
エンジン)というものがGUとセットでPSPにはありますが、この
GEに関しては未実装の物があるみたいです。というのはローテ
ート(回転)などに使う行列の変換...いわゆるジオメトリ演算は
GEを使わず、C言語のプログラム側でやっています。ま、関数
用意してくれるからそれを使えばいいんですが、パフォーマンスは
どうなんでしょうかねぇ?
・ ジオメトリ演算に使うデータの型はfloatが使用されています。
(多分u32等の整数が必要なライブラリ関数もあると思いますが
floatが普通に使えるのはありがたいですす。ToolChainの成果
というのもあるんでしょうが...)
・ cubeで使用される立方体のVertex(頂点情報)はプログラム内に配列
として用意されています。こんな感じで定義していけば良いんだというのが
判ります。数少ないからグッドです。但し、数増やしたりサイズ変えるんなら
Projection(透視変換)とかWorldView(ワールドビュー)とか変える必要
あるかもです。カメラ固定なんだ、このサンプル。逆にここら辺を変えて
試してみるのが勉強になりますね。
・ GUの初期化が思いっきりむずいです。画面モードとか変えなければこの
ままでいけそうですが...。多分、ここら辺は、SCEの純正SDKとかなり
互換性が確保できている気がします(SCE純正のSDK持ってないので
あくまで想像ですよ^^;)。
PSPで3Dグラフィックスが動きました(^o^)
ばんざーい!(...いや、私が作ったわけじゃ
ないんだけど)
PSPSDK(ベータ1じゃなくて、開発中のやつね)のサンプル
にはGU(PSPのグラフィックスチップの事です)のものも
含まれています。その中に”cube"というのがあります。
この"cube"は6面カラフルな立方体に各面にバンプマップ
(わかんない人はお父さん、お母さんに聞いてみよう)を施した
ものをくるくる回すでものです。
...それが何?っていうなかれ、今までPSPのGUに関しては
ハッキン...いや、調査が進んででおらず、訳の判んないもの
として利用されていませんでした。PSPSDKが出るまでの
プログラミングってビデオラム(VRAM)の先頭アドレスを
取得してそこに、画像データを書き込むという事しかできず
(たいがいそれでいいんですが...)。PSPの無駄に強力な
ハードウエアは利用できなかったんです。これからは、みんな
GUの機能を使ったソフトを作るんだろうなぁ...楽しみです。
で、このサンプル弄んでわかった事書きますね(^o^)
・ テクスチャーに使用される画像ファイルは.ROWファイルです
フォトショップで編集できるよ(^o^)
・ .ROWファイルはbin2cコマンドでC言語の配列データとして
変換する事が可能です。サンプルのMakefaile見れば使い方
わかります。
・ GUに送信するGUアセンブリ(コマンドみたいの)はコマンドリスト
として事前に用意したコマンドリスト配列変数にGU用のライブラリ
関数経由でセットします。描画の直前にコマンドリスト変巣はDMA
転送でGUに送られます。そこで注意なのが、DMA転送に都合の
よい境界サイズでこのコマンドリスト配列を用意するのがポイント!
・ GUに対して、座標やベクトルの計算を行うためのGE(ジオメトリ
エンジン)というものがGUとセットでPSPにはありますが、この
GEに関しては未実装の物があるみたいです。というのはローテ
ート(回転)などに使う行列の変換...いわゆるジオメトリ演算は
GEを使わず、C言語のプログラム側でやっています。ま、関数
用意してくれるからそれを使えばいいんですが、パフォーマンスは
どうなんでしょうかねぇ?
・ ジオメトリ演算に使うデータの型はfloatが使用されています。
(多分u32等の整数が必要なライブラリ関数もあると思いますが
floatが普通に使えるのはありがたいですす。ToolChainの成果
というのもあるんでしょうが...)
・ cubeで使用される立方体のVertex(頂点情報)はプログラム内に配列
として用意されています。こんな感じで定義していけば良いんだというのが
判ります。数少ないからグッドです。但し、数増やしたりサイズ変えるんなら
Projection(透視変換)とかWorldView(ワールドビュー)とか変える必要
あるかもです。カメラ固定なんだ、このサンプル。逆にここら辺を変えて
試してみるのが勉強になりますね。
・ GUの初期化が思いっきりむずいです。画面モードとか変えなければこの
ままでいけそうですが...。多分、ここら辺は、SCEの純正SDKとかなり
互換性が確保できている気がします(SCE純正のSDK持ってないので
あくまで想像ですよ^^;)。
by pspborder
| 2005-07-10 00:12
| PSP開発