GL_TEXTURE_WRAP)_(S / T)を変更するとどうなりますか?


11

私はいくつかの初心者向けOpenGLチュートリアルに取り組んでおり、現在のチュートリアルでは、単純な長方形にテクスチャを適用する方法を教えています。チュートリアルの状態では、テクスチャパラメータGL_TEXTURE_WRAP_SおよびGL_TEXTURE_WRAP_TをGL_CLAMP_TO_EDGEに設定するように指示されていますが、これが実際に何をするかはわかりません。それがマップされているスペースよりも大きい/小さいテクスチャがどのように処理されるかに関係していることはわかっていますが、これが実際にどのような動作を引き起こすかはわかりません。GL_CLAMP_TO_EDGEは何をしますか、そしてこれはGL_CLAMP、GL_CLAMP_TO_BORDER、GL_REPEATとどう違うのですか?どうもありがとうございました。私のようなバカに画像を提供できると助かります。

回答:


29

まあ、SとTは単にUとV(またはXとY)を意味します。

vec4.xyzw == vec4.rgba == vec4.strq

GL_REPEATモードでは、(0,0)から(1,1)の範囲を超えるとテクスチャが繰り返されます。

GL_CLAMP_TO_EDGEモードでは、エッジから落ちたときにテクスチャが最後のピクセルで停止します。

GL_CLAMPとGL_CLAMP_TO_BORDERは、すべてのテクスチャの境界が0ピクセルでなければならないため減価償却され、モードが意味をなさなくなりました。(GL3のどこかで私は信じています)

より多くのモードがあるので、ドキュメントを必ず読んでください。(例:GL_MIRRORED_REPEAT、GL_MIRROR_CLAMP_TO_EDGE)


http://www.flipcode.com/archives/Advanced_OpenGL_Texture_Mapping.shtmlにいくつかの良い例があります。ここにプレビューがあります:

ラップS:GL_CLAMP /ラップT:GL_CLAMP

クランプクランプ

ラップS:GL_CLAMP /ラップT:GL_REPEAT

クランプリピート

ラップS:GL_REPEAT /ラップT:GL_CLAMP

繰り返しクランプ

ラップS:GL_REPEAT /ラップT:GL_REPEAT

リピートリピート


ありがとう。素晴らしい答え。GL_CLAMP_TO_EDGEとGL_CLAMPの間に違いがあるかどうか、そしてとにかくテクスチャを拡大して利用可能なスペースを埋めるだけの方法があるかどうかを知っていますか?
w4etwetewtwet 2013

明確にしていないので申し訳ありませんが、CLAMPはGL_CLAMP_TO_EDGEを意味しますが、GL_CLAMPは最新のOpenGLではなくなっています。それを強調するために答えを編集します。
MickLH 2013

「拡張」については、単にテクスチャを別の範囲に引き伸ばすことを意味する場合は、メッシュのパラメータ化中に処理する必要があります。(UVマッピング、アーティストの仕事)。実際にそれを実際に行う必要がある場合は、シェーダーで使用する独自の式を記述する必要があります。(または、アプリがすでに
非常に

3

2014/02/07時点でのglTexParameterのOpenGLリファレンスページの抜粋を以下に示します

GL_TEXTURE_WRAP_S

テクスチャ座標 wrapパラメータをGL_CLAMP_TO_EDGE、GL_CLAMP_TO_BORDER、GL_MIRRORED_REPEAT、GL_REPEAT、またはGL_MIRROR_CLAMP_TO_EDGEのいずれかに設定します。

  • GL_CLAMP_TO_EDGEは、s座標をrange 範囲にクランプします。ここで、Nはクランプ方向のテクスチャのサイズです。

  • GL_CLAMP_TO_BORDERは、GL_CLAMP_TO_EDGEと同様の方法でs座標を評価します。
    ただし、GL_CLAMP_TO_EDGEモードでクランプが発生した場合、フェッチされたテクセルデータは、GL_TEXTURE_BORDER_COLORで指定された値に置き換えられます。

  • GL_REPEATを指定すると、s座標の整数部分が無視されます。
    GLは小数部分のみを使用するため、繰り返しパターンが作成されます。

  • GL_MIRRORED_REPEATは、sの整数部分が偶数場合、s座標をテクスチャ座標の小数部分に設定します。sの整数部が奇数の場合、sテクスチャ座標はに設定されます1フラク。ここでフラクsの小数部を表します。

  • GL_MIRROR_CLAMP_TO_EDGEを指定すると、テクスチャの1つの描写についてGL_MIRRORED_REPEATの場合と同様にs座標が繰り返され、その時点でGL_CLAMP_TO_EDGEのように座標がクランプされます。

最初は、GL_TEXTURE_WRAP_SGL_REPEATに設定されています

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.