Các thành phần của gl_TexCoord [0] có nghĩa là gì?


10

Sự khác biệt giữa gl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].pvà là gl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].zgì?

Tôi hiểu đó gl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].zlà tọa độ pixel?

Nhưng gl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].ptôi phải sử dụng chúng ở đâu?

Câu trả lời:


15

Sự khác biệt chỉ là ngữ nghĩa . Bất kỳ vector GLSL có thể được truy cập bằng cách sử dụng x/y/z/w, r/g/b/ahoặc s/t/p/q. Sử dụng điển hình là:

  • xyzwcho tọa độ không gian
  • rgbacho màu sắc
  • stpqcho tọa độ kết cấu
  • nếu không có cách nào ở trên áp dụng, bất kỳ hương vị nào cũng có thể được sử dụng, nhưng khi nó có thể gây nhầm lẫn, var[0]/var[1]/var[2]/var[3]có thể được sử dụng thay thế.

Bạn có thể trộn chúng trong các biểu thức : foo.x = bar.q, hoặc thậm chí foo.xy = bar.gb + baz.st;. Hạn chế chính là việc tạo hình chỉ có thể được thực hiện bằng cách sử dụng các chữ cái của cùng một nhóm, tức là. foo.xyakhông hợp lệ vì nó pha trộn xytừ xyzwatừ rgba.


Tôi không quen thuộc với ký hiệu stpq cho tọa độ kết cấu ( thay vào đó luôn thấy uv ). Tôi đoán p sẽ được sử dụng cho kết cấu 3D, nhưng trong trường hợp nào q sẽ được sử dụng? Chỉnh sửa: Nevermind Tôi chỉ tìm thấy câu trả lời của tôi. Đó sẽ là, với TextureCubeArrays.
David Gouveia

@DavidGouveia: Không, thực sự. Các chức năng kết cấu khác nhau có ý nghĩa khác nhau. Ví dụ: truy cập a sampler2DShadowtexturenghĩa là tọa độ p là giá trị so sánh. Truy cập a sampler2DShadowtextureProjnghĩa là tọa độ p là giá trị so sánh và tọa độ q được chia thành ba khác ( trước khi so sánh, vì vậy p thực sự là comparison * q). Chúng không có bất kỳ ý nghĩa nội tại nào ; ý nghĩa thay đổi tùy thuộc vào cách chúng được sử dụng.
Nicol Bolas

@Nicol Cảm ơn bạn đã xóa nó. Tôi thực sự chỉ sử dụng HLSL trước đây và thậm chí ở đó chỉ thực sự cần đến nội tại cơ bản tex2D và texCube. Tôi đã không nhận thức được vô số các chức năng kết cấu hiện có. (Không liên quan: Đó có phải là tên thật của bạn hay chỉ là con rồng từ MTG?)
David Gouveia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.