2013-09-30 10 views
7

私は専門家ではないので、この質問は愚かではありません。 glTexParameterを使用してテクスチャパラメータを設定したチュートリアルをいくつか読んだ。私はGL_TEXTURE_MIN_FILTER、GL_TEXTURE_MAG_FILTER、GL_TEXTURE_WRAP_Rなどについて話しています。 突然、これらのパラメータを設定するためにglSamplerParameterを使用したチュートリアルがあります。glTexParameterとglSamplerParameterの違いは何ですか

私は(GL_TEXTURE_MIN_FILTER、GL_TEXTURE_MAG_FILTER、GL_TEXTURE_WRAP_R、GL_TEXTURE_MIN_LODなど)のようなglTexParameterとglSamplerParameterの間にいくつかの共通のパラメータがある、とglTexParameter(GL_TEXTURE_BASE_LEVEL、GL_TEXTURE_SWIZZLE_Rなど)にのみ適用可能であることをいくつかがあります参照してください。結局のところ、glTexParameterはイメージに作用しているため、これらのパラメータは属性そのものを指定しているので、私は珍しいものを完全に理解しています。

しかし、私はこれらの2つのGL呼び出しの間に共通するいくつかのパラメータがあるのはなぜか分かりません。いつ使うべきですか?私の意見では、サンプルパラメータ(GL_TEXTURE_MIN_FILTER、GL_TEXTURE_MAG_FILTER、GL_TEXTURE_WRAP_Rなど)は、サンプラ(glSamplerParameter)にのみ適用でき、glTexParameterには適用できません。

2つの違いを理解してください。

答えて

10

glSamplerParameterは比較的新しいものです。テクスチャがサンプリングされる方法は、実際には意味論的な用語ではなく、実際のハードウェア上で、テクスチャ自体ではなく、サンプリングを行うことの特性です。

実際にハードウェア上で機能するように物を表現したいという欲求に加えて、無関係な2つの物を一緒に結ぶと、パフォーマンス面でコストがかかることがあります。あなたが何かをサンプラーのプロパティ、例えばサンプラーのサンプルにする方法を作るなら、同じテクスチャを同じシェーダ内で2つの異なる方法でサンプリングすることができます。テクスチャのプロパティであれば、同じテクスチャを2回アップロードするか、マルチパスシェーダを作成する必要があります。

これで2つのものが分離されています。

+0

それはglSamplerParameterは多くの点で優れている使用してのように聞こえます。 glTexParameterを使用することに利点があるケースを指摘できますか? – viktorzeid

+3

@kvikram:実際にはnone = Pはありません。サンプラーオブジェクトは、それが今まで何年もD3Dで働いてきた方法であるはずです。サンプラーの状態をテクスチャーオブジェクトから分離することは非常に重要です。単に、異なるサンプラーをTMUにバインドするだけで、フィルターモードを変更することができます。 OpenGL 3.3の機能ですが、かなり広くサポートされています。 –

+0

両方のおかげです。 – viktorzeid

2

reference about Sampler Objects そしてhere from geeks3d

のためにここを見てこれは、バージョン3.3でコアのOpenGLに追加された(これはかなり今日も適合させる必要があります)。

一般に、テクスチャデータからテクスチャからサンプリングを分離します。これまでは、両方ともテクスチャオブジェクトのタスク(非常に非効率的で問題が多い)でした。今や新しいソリューションは多くの柔軟性をもたらします。

パラメータは、テクスチャオブジェクトの場合と同じですが、唯一のサンプリングに関する:GL_TEXTURE_WRAP_S​, GL_TEXTURE_WRAP_T​, GL_TEXTURE_WRAP_R​, GL_TEXTURE_MIN_FILTER​, GL_TEXTURE_MAG_FILTER​, GL_TEXTURE_BORDER_COLOR​, GL_TEXTURE_MIN_LOD​, GL_TEXTURE_MAX_LOD​, GL_TEXTURE_LOD_BIAS​, GL_TEXTURE_COMPARE_MODE​, or GL_TEXTURE_COMPARE_FUNC​

関連する問題