Frage

Ich habe meistens Beispiele gesehen, bei denen a Matrix3D Das Objekt wird als Vertex-Konstantenregister in AS3 an übergeben Kontext3D Objekt.Habe aber noch nie eine Matrix in anderen Registertypen gesehen (vorübergehend oder Attribut).

Gibt es eine Möglichkeit, eine Matrix-Scheitelpunktkonstante in ein temporäres Register zu kopieren und dann einzelne Felder dieses temporären Matrix-Registers (z. B. für die Rotation) mit anderen bereitgestellten Werten (Scheitelpunktattribute oder andere Konstanten) zu manipulieren?

Könnte ein einfaches mov dest, source Funktioniert die Operation?

War es hilfreich?

Lösung

Ja, das funktioniert (nehmen Sie es vom Maulwurf :)).Stellen Sie einfach sicher, dass Sie genügend (3 oder 4) Register kopieren.Eine gute Möglichkeit, über Matrixoperationen nachzudenken, ist auch, dass sie nur eine Abkürzung für 3- oder 4-Punkt-Produktanweisungen sind.In AGAL wird eigentlich nichts eingegeben, eine Matrix besteht nur aus ein paar aufeinanderfolgenden Registern.Die Matrix-Upload-Funktionen dienen lediglich dem Zweck, in einem Aufruf in 4 Register hochzuladen.Und im Shader

m44 dest, src, srcmatrix

ist genau das gleiche wie:

dp4 dest.x srx, srcmatrix  
dp4 dest.y srx, srcmatrix+1  
dp4 dest.z srx, srcmatrix+2  
dp4 dest.w srx, srcmatrix+3

Die +1 usw. bedeutet hier Registernummer +1 usw.

Andere Tipps

Ich bin fast sicher, dass temporäre Register auch Matrizen enthalten und dass Ihre Anfrage möglich ist, aber die beste Antwort erhalten Sie möglicherweise von jemandem wie Marco Scabia:

http://iflash3d.com/

Er ist sehr zugänglich und kennt sich mit AGAL aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top