2012-04-01 4 views
0

Einfache Frage, hoffentlich eine einfache Antwort.Warum Attributdaten Viertes Feld 1

Attributdaten, die an Vertex-Shader gesendet werden, werden als vierdimensionaler Vektor dargestellt. In Bezug auf die Darstellung von Positionsdaten werden die Felder typischerweise X, Y, Z und W genannt. Meine Frage betrifft W.

standardmäßig, wenn keine Informationen zur Verfügung gestellt, ein Attribut enthält:

[ 0, 0, 0, 1 ] 

Warum gibt es die Differenz im vierten Feld mit ihm zu 1 und nicht 0 wie der Rest säumigen? Ist es stilistisch, mathematisch oder ein anderes Argument?

Es gibt keine wirkliche Ursache für diese Frage außer Neugier. Vielen Dank für Ihre Zeit.

Antwort

2

Weil es der allgemeinste nützliche Wert ist, den es haben könnte.

Wenn Sie eine 3-Element-Farbe (RGB) senden, ist die vierte Komponente, die automatisch mit 1 ausgefüllt wird, sehr hilfreich. Ähnlich, wenn Sie eine 3-Vektor-Position senden, ist die vierte Komponente, die 1 ist, nützlich für die Multiplikation mit 4 × 4-Matrizen.

Die einzige Zeit, die es eine Haftung ist, ist mit Normalen (oder ähnlichen Richtungen wie Tangenten und Bitangents), wenn Sie versuchen, sie mit 4x4-Matrizen zu verwenden.

+0

Nun, das macht Sinn. Danke, dass Sie mir klar gemacht haben, dass es wirklich so einfach ist, wie es scheint. – ssell

+0

Um ein wenig zu verdeutlichen, setzt es für Positionsvektoren die 4. Koordinate korrekt so, dass die Vektoren homogen sind. Für Farben setzt er den Alpha-Kanal auf 1, d. H. Vollständig undurchsichtig. – starruler

+0

@Starruler: Alpha bedeutet nicht opak/transparent. Es bedeutet, was immer du willst. –