2013-06-17 6 views
6

については、newレッドブックで読んでいます。 322ページで が言われて:テクスチャビューを使用する場合

OpenGLを独自の形式と大きさで、それぞれ、複数の テクスチャの間で単一のデータストアを共有することができます。 (テクスチャビュー経由)

は今、私の質問は以下のとおりです。

それは、単一のテクスチャソースが(この場合はテクスチャビューで)複数のインスタンスによって参照されているということですか?

同じテクスチャオブジェクトを使用するのとどのように違うのでしょうか?

また、テクスチャビューを経由してテクスチャのピクセルを変更すると元のテクスチャオブジェクト内のピクセルを変更することを意味するのでしょうか?(私はdocが、それはテクスチャストアの別名であると言うような答えが肯定的であると仮定)

答えて

6

はい。データストアを共有するということは、異なるオブジェクトから同じストレージにアクセスすることを意味します。ポインタの共有は、2つの異なる場所から同じメモリにアクセスできることを意味します。

サンプラーオブジェクトとの類似点がない点で、サンプラーオブジェクトとは異なります。 Sampler objectsはサンプリングパラメータを格納します。テクスチャオブジェクトはthe mipmap range,swizzle maskなどのparameters that are not for samplingです。これらはサンプラーの状態ではありません。彼らはテクスチャの状態です。

テクスチャオブジェクトには、specific texture typeもあります。同じストレージの異なるビューには、different texture types (within limits)を設定できます。 GL_TEXTURE_2D_ARRAYテクスチャの単一のレイヤーのビューであるGL_TEXTURE_2Dを持つことができます。 GL_TEXTURE_2D_ARRAY(6層以上)を使用して、GL_TEXTURE_CUBE_MAPを作成することができます。

サンプラーオブジェクトではできません。

テクスチャオブジェクトには、ストレージをどのように解釈するかを定義するinternal formatがあります。同じストレージの異なるビューにはdifferent formats (within limits)があります。サンプラーはフォーマットに影響しません。

サンプラーオブジェクトでもこれを行うことはできません。

サンプラーオブジェクトと同じ効果を得るには、テクスチャビューを使用できますか?サンプラーでは、サンプリングパラメーターをテクスチャーオブジェクトから切り離します。これにより、複数の異なるオブジェクトに同じパラメータセットを使用できます。したがって、各テクスチャに移動して変更することなく、1つのサンプラーオブジェクトを変更し、複数のテクスチャを使用することができます。

2つの異なる目的のために、2つの異なる機能があります。

+0

ええ、それはかなり明確です。しかし、一度質問したところでは、テクスチャビューでデータを変更すると、あなたの文に基づいて参照テクスチャでも変更されます: "ポインタを共有するということは、 2つの異なる場所から同じメモリにアクセスすることができます。おそらく答えは「はい」ですか? –