gl_TexCoord [0]のコンポーネントはどういう意味ですか?


10

違いは何ですかgl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].pとはgl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].z

gl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].zピクセル座標であると理解していますか?

しかし、どういうgl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].p意味で、どこで使用する必要がありますか?

回答:


15

違いは意味のみです。GLSLベクトルにはx/y/z/wr/g/b/aまたはを使用してアクセスできますs/t/p/q。一般的な使用法は次のとおりです。

  • xyzw以下のための空間座標
  • rgba以下のための
  • stpq以下のためのテクスチャ座標
  • 上記のいずれにも当てはまらない場合は、任意のフレーバーを使用できますが、混乱する可能性がある場合は、var[0]/var[1]/var[2]/var[3]代わりに使用できます。

これらを式に混ぜることができます:foo.x = bar.q、またはfoo.xy = bar.gb + baz.st;。主な制限は、スウィズリングは同じグループの文字を使用してのみ実行できるということです。 foo.xya、無効な、それはミックスしているためxyからxyzwしてaからrgba


テクスチャ座標のstpq表記に慣れていません(代わりに常にuvを見てきました)。3Dテクスチャにはpが使用されると思いますが、qはどのような状況で使用されますか?編集:私はちょうど私の答えを見つけたことを気にしないでください。それは、TextureCubeArraysの場合です。
David Gouveia

@DavidGouveia:いいえ、実際には。異なるテクスチャリング関数には異なる意味があります。たとえば、sampler2DShadowwith にアクセスするとtexturep座標が比較値になります。sampler2DShadowwithにアクセスtextureProjすることは、p座標が比較値であり、q座標が他の3つに分割されることを意味します(比較前なので、pは実際にはcomparison * q)。それらには本質的な意味はありません。使い方によって意味が変わります。
Nicol Bolas

@Nicolそれを片付けてくれてありがとう。私は実際には以前にHLSLを使用しただけで、基本的なtex2DおよびtexCube組み込みが本当に必要な場合さえあります。既存の多数のテクスチャリング機能に気づきませんでした。(無関係:それはあなたの本名ですか、それともMTGのドラゴンですか?)
デビッド・グベイア
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.