0

Delphi XE2 用の最新の GLScene トランクを使用しており、2D ではなく 3D を使用して画面に GUI 要素を描画する GUI っぽいタイプのプロジェクトに取り組んできました。

動作しますが、明らかな理由により、グラフィックスの配置はピクセル単位で完璧ではありません。

TGLSceneViewer の 1 ピクセルが画面上でほぼ 1 ピクセルになるように、3D ビューをマッピングすることができました。私にはそれで十分です。

ただし、GUI に 3D を使用するという考えはあきらめており、代わりに GLScene を 2D グラフィックス表現専用に使用することに集中します。これは GPU アクセラレーションであるためです。

次に、GUI に Graphics32 を使用した以前のプロジェクトで Projective Transformation を使用したことを思い出しました。

射影変換を使用すると、単純に 3D 空間にポイントをプロットし、それらのポイントの 3D 座標を読み取り、座標を 2D 座標に変換して、それらを TBitmap32 射影変換パラメーターに適用することができました。私のソフトウェアには 3D 機能がありました。

だから、私の質問は:

GLScene または OpenGL でテクスチャを「ストレッチ」して、テクスチャが 4 点間または平面内に収まるようにすることはできますか?

そうすれば、2D グラフィックスに GLScene を使用できますが、3D のように見せるために簡単なトリックを行うことができます。

以下のリンクは、私が探しているものを視覚的に表現したインターネット上の画像を指しています: http://i.stack.imgur.com/hDdqa.png

4

1 に答える 1

1

シェーダーにクレイジーなものを実装していない、または固定関数のパイプライン機能を使用していると仮定すると、これはかなり簡単なはずです。

OpenGL のテクスチャ座標は常に正規化されます。つまり、[0-1] の範囲に収まります。

したがって、基本的に、オブジェクトを描画するときは、常にテクスチャの座標を最大 1 および最小 0 に設定する限り、常にテクスチャがクワッドを埋める必要があります。

4点を描画するために使用しているコードを提供していただけますか? 見れたら、そのお手伝いができるかもしれません。

于 2014-09-30T11:54:02.437 に答える