Gl_TexCoord [0] bileşenleri ne anlama geliyor?


10

Arasındaki farklar nelerdir gl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].pve gl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].z?

Bunun gl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].zpiksel koordinatları olduğunu anlıyorum.

Ama ne gl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].panlama geliyor ve nerede kullanmalıyım?

Yanıtlar:


15

Fark sadece anlamsaldır . Herhangi bir GLSL vektörüne x/y/z/w, r/g/b/aveya kullanılarak erişilebilir s/t/p/q. Tipik kullanım:

  • xyzwiçin mekan koordinatları
  • rgbaiçin renkler
  • stpqiçin doku koordinatları
  • yukarıdakilerin hiçbiri geçerli değilse, herhangi bir lezzet kullanılabilir, ancak kafa karıştırıcı olabileceği zaman bunun var[0]/var[1]/var[2]/var[3]yerine kullanılabilir.

Bunları ifadelerde karıştırabilirsiniz:, foo.x = bar.qhatta foo.xy = bar.gb + baz.st;. En büyük kısıtlama, swizzling'in sadece aynı grubun harfleri kullanılarak yapılabilmesidir . foo.xyaolduğunu geçersiz o karıştırır, çünkü xygelen xyzwve agelen rgba.


Doku koordinatları için stpq notasyonuna aşina değilim ( bunun yerine her zaman uv gördüm ). Sanırım p 3D dokular için kullanılacak, ama hangi durumda q kullanılacaktır? Edit: Nevermind Cevabımı yeni buldum. Bu, TextureCubeArrays ile olur.
David Gouveia

@DavidGouveia: Hayır, aslında. Farklı tekstüre fonksiyonlarının farklı anlamları vardır. Örneğin, bir erişim sampler2DShadowile texturebu aygıtın s koordinat karşılaştırma değeridir. Bir erişim sampler2DShadowile textureProjbu aygıtın s koordinat karşılaştırma değeri ve q (koordinat diğer üç ayrılmıştır önce , yani karşılaştırma s aslında comparison * q). Onların içsel bir anlamı yoktur; anlam, nasıl kullanıldıklarına bağlı olarak değişir.
Nicol Bolas

@Nicol Temizlediğin için teşekkürler. Aslında daha önce sadece HLSL kullandım ve hatta sadece gerçekten temel tex2D ve texCube intrinsics gerekli. Mevcut doku işlevlerinin çokluğunun farkında değildim. (İlgisiz: Bu senin gerçek adın mı, yoksa sadece MTG'nin ejderhası mı?)
David Gouveia
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.