Khi sử dụng kết cấu trong GLSL, cách tốt nhất là tính toán tọa độ kết cấu cuối cùng trong trình tạo bóng đỉnh và bàn giao chúng cho trình tạo bóng mảnh bằng varying
s. Ví dụ với một lần lật đơn giản trong tọa độ y:
// Vertex shader
attribute vec2 texture;
varying highp vec2 texCoord;
// ...
void main() {
texCoord = vec2(texture.x, 1.0-texture.y);
// ...
}
// Fragment shader
varying highp vec2 textureCoordinates;
uniform sampler2D tex;
// ...
void main() {
highp vec4 texColor = texture2D(tex, texCoord);
// ...
}
Nếu việc lật trong tọa độ y hoặc một thao tác thậm chí đơn giản hơn như thêm vec2(0.5)
vào tọa độ kết cấu được thực hiện trong trình đổ bóng mảnh thì việc truy cập kết cấu sẽ chậm hơn nhiều. Tại sao?
Một lưu ý, ví dụ, pha trộn hai kết cấu, sử dụng tổng trọng số của chúng, rẻ hơn nhiều về thời gian và cũng cần phải được thực hiện cho từng pixel, do đó, việc tính toán tọa độ kết cấu dường như không tốn kém.