2010-12-31 7 views
0

私はScrolling Game Development Kitのコードを作成中です。このプログラムの古いリリース(2.0)はDirectXに基づいており、すべてのグラフィックを描画するためにDirect3D Spriteオブジェクトを使用していました。スプライトオブジェクトのTransformプロパティを使用して、ディスプレイに出力されているときにテクスチャ矩形をどのように変形するかを指定します。現在のリリース(2.1)は、OpenGLへの変換であり、GL TexCoord2とGL Vertex2呼び出しを使用してスプライトを描画するためのソースと出力矩形の座標を送信しています。今では、ビデオカードがDirectXでうまくいったと言われていますが、OpenGLドライバはNPOTSテクスチャ(かなり基本的)を使うのに必要なGL_ARBをサポートしていません。だから私は2.0に戻ってすべてを元に戻さずにDirectXに戻そうとしている。残念ながら、4点を与えられた行列を得るよりも、行列が与えられたときに4点を得る方がずっと簡単だと思われます。バージョン2.1のすべての行列情報を削除したので、ディスプレイ上にイメージを描画する関数を呼び出すときに残った4つのコーナーポイントのみがあります。 Direct3D Spriteを変換するために4つのコーナー情報を使用する方法はありますか?4隅をOpenGLからDirect3Dスプライトへの変換のためのマトリックスに変換する

また、DirectXがOpenGLよりも何かを行うことができない理由を知っている人はいますか?DirectXがNPOTSテクスチャをサポートしていてOpenGLはサポートしていないビデオカードのドライバがありますか?

+1

NPOTテクスチャをサポートしていないシステムは何歳ですか?これらは約10年間続いています。また、通常のテクスチャを使用して、未使用領域を埋め込むこともできます。 – datenwolf

+0

私はシステムがかなり古いと思うし、OpenGL用のドライバは決してうまく開発されていないかもしれません。私は知らない - 私はそれを見ていない。いずれにしても、POTテクスチャに切り替える際の私の他の問題は、すべての座標がGL_ARBテクスチャの別の機能である0-1の値ではなくピクセルに基づいていることです。 DirectXに切り替えるよりも、OpenGLを使ってこの作業をやってみるほうが簡単でしょうか? – BlueMonkMN

+0

範囲0..1をピクセルに変換するのは簡単です。 – datenwolf

答えて

0

バンプマッピングの仕組みを読んでおく価値があります。例えば、 this site。あなたは、ワールド空間から接線空間(現在の面に対する空間)にマップする接線の空間行列になります。その目的は、ワールド空間のベクトル、一般にライトからのベクトルをタンジェント空間のベクトルに変換することです。テクスチャがサーフェス法線を定義する空間となります。

とにかく、その行列には接線空間から世界空間へのマッピングがあります。私はあなたが欲しいものだと思いますか?このチュートリアルで作成されたマッピングは、純粋に方向ベクトルのためのものですが、4x4に拡大して原点を意味のある場所に固定するのは難しくありません。

+0

私はここで2Dを扱っているだけなので、私に4x4の行列を与えるものよりも簡単かもしれません。私は高度な代数と微積分を経てコンピュータサイエンスの学士号を取得したにもかかわらず、学校で行列をやっていることを覚えていない。私は少なくとも彼らが何のために変容したかを覚えていますが、実際にどのように働いているかを覚えておくだけでは十分ではありません。 – BlueMonkMN

+0

適用される変換は常に記述することができますか?回転とスケールとして?四角形の原点から4つの変形された点がある場合は、行列を復元するのは非常に簡単です。 – Tommy

+0

これは、しばしばフリップでもよく、ユーザがマトリックスパラメータを直接入力することができるので、おそらく任意の2-D変換マトリックスである可能性があります。 – BlueMonkMN

関連する問題