0

3Dテクスチャマッピングに問題があります。複数の2Dテクスチャがあり、これらの2Dテクスチャを使用して3Dテクスチャを作成したい場合。これらすべてのデータをまとめるために何ができますか?関数glTexImage3Dは、テクスチャのデータにつながるパラメータconst GLvoid*texelsで終了します。しかし、今は32個の2Dテクスチャがあり、3Dテクスチャを取得したいと考えています。どうやってするか?

2番目の質問は、画像空間のフィルタリング方法についてです。それが何であるかを知っている人はいますか?この方法を使用して、テクスチャ座標を決定する必要があります。

4

2 に答える 2

1

本当に 3D テクスチャが必要ですか? 多分より良い方法は、テクスチャ配列を持つことですか?

ここに良い情報があります:http://www.opengl.org/wiki/Array_Texture

3D テクスチャよりも使いやすいと思います。これらは、たとえば、各カスケードがテクスチャの配列内の異なる要素に移動するカスケード シャドウ マッピングで非常に役立ちます。

于 2012-05-16T17:09:52.763 に答える
0

しかし、今では 32 個の 2D テクスチャがあり、3D テクスチャを取得したいと考えています。どうやってするか?

プログラムのある時点で、テクスチャをアップロードします。あなたの質問から、あなたはすでに glTexImage2D を使用してそれらをアップロードしたと思います。テクスチャ オブジェクト間でテクスチャ データを転送するのは難しく、面倒で、あまり堅牢ではないため、2D テクスチャを 3D テクスチャに結合する方法を尋ねるのは少し的外れです。

しかし、完璧にできるのは、3D ボクトセルのブロックに次々とアップロードされた 2D データのスライスから 3D テクスチャを構築することです。glTexImage2D へのすべての呼び出しをglTex Sub Image 3Dの呼び出しに置き換えるだけです。データをアップロードする前に、glTexImage3Dへの呼び出しと NULL ポインタをデータ パラメータとして使用してテクスチャを初期化できます ( OpenGL-4 を使用している場合は、glTexStorage3Dも使用できます)。

于 2012-05-16T12:27:41.710 に答える