เมื่อใช้พื้นผิวใน GLSL วิธีที่ดีที่สุดคือการคำนวณพิกัดพื้นผิวสุดท้ายใน shader ที่จุดสุดยอดและส่งให้กับ shader ของชิ้นส่วนโดยใช้varying
s ตัวอย่างที่มีการพลิกง่าย ๆ ในพิกัด 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);
// ...
}
หากการพลิกในพิกัด y หรือการดำเนินการที่ง่ายยิ่งขึ้นเช่นการเพิ่มvec2(0.5)
ลงในพิกัดพื้นผิวจะดำเนินการในส่วนของ shader การเข้าถึงพื้นผิวจะช้ากว่ามาก ทำไม?
ในฐานะที่เป็นโน้ตเช่นการผสมพื้นผิวสองอย่างโดยใช้ผลรวมถ่วงน้ำหนักของพวกเขานั้นถูกกว่ามากในแง่ของเวลาและยังจำเป็นต้องทำในแต่ละพิกเซลดังนั้นการคำนวณพิกัดพื้นผิวเองจึงดูเหมือนจะไม่แพง