Da der Vertex-Shader einmal pro Vertex ausgeführt wird (dh im Dreieck dreimal), wie wird die variierende Variable für jedes Fragment berechnet, wenn es (wie im Beispiel) nur dreimal zugewiesen wird?Wie interpoliert OpenGL variierende Variablen auf dem Fragment-Shader, selbst wenn sie nur drei Mal auf dem Vertex-Shader gesetzt sind?
Fragment-Shader:
precision mediump float;
varying vec4 v_Color;
void main() {
gl_FragColor = v_Color;
}
Vertex-Shader:
attribute vec4 a_Position;
attribute vec4 a_Color;
varying vec4 v_Color;
void main() {
v_Color = a_Color;
gl_Position = a_Position;
}
Also, die Frage ist, wie funktioniert das System hinter diesem Know, wie die Variable v_Color bei jedem Fragment zu berechnen, da diese Der Shader weist v_Color nur 3 Mal zu (in einem Dreieck).
Es interpoliert den Wert zwischen den drei Ecken, was es bedeutet, eine variierende Variable zu sein. –
Können Sie mir bitte sagen, wie gehen die inneren Prozesse? Wie misst es die Entfernung? (Sorry für meinen Mangel an Wissen, konnte aber nichts anderes im Internet finden.) – ViliX64
Ich bin nicht so erfahren mit GLSL, ich hatte gehofft, dass jemand anderes die Frage beantworten würde. Aber im Grunde, wenn Ihre Scheitelpunkte zehn Pixel voneinander entfernt sind, wird jedes Pixel zwischen den Scheitelpunkten eine interpolierte Farbe erhalten, die 1/10 zu der anderen Farbe ist, dann 2/10, 3/10 usw. –