2016-04-02 11 views
0

Wie deklariert man ein Array von TEXCOORDs? Ich In verschiedenen Struktur haben:Nicht definierte Anzahl von TEXCOORDs

float2 foo : TEXCOORD0 
float3 bar : TEXCOORD1 

Und jetzt brauche ich

float4 Positions[NUMBER_OF_FLOATS] 
float3 OtherPositions[NUMBER_OF_FLOATS_2] 

Ich möchte diese Arrays von TEXCOORDs bestehen (wenn ich die TEXCOORD semantische weglassen, ich einen Fehler, weil es). Aber egal wie ich es schreibe, bekomme ich einen doppelten Fehler, dass ich TEXCOORD0 und TEXCOORD1 mehrfach benutze.

Jede Hilfe wird geschätzt.

Antwort

0

Das Problem ist, dass die vordefinierte Semantik wie TEXCOORD einen bestimmten Typ haben (gesehen in doc). Der Compiler erwartet also, dass TEXCOORD ein Float-Vektor und kein Array von Float-Vektoren ist. Vielleicht funktioniert es mit benutzerdefinierten Semantiken, aber hat keine Referenzen gefunden und es nie selbst getestet.

Ich stolperte auch über diese Problematik und löste sie (ziemlich hässlich) mit dem Präprozessor. wenn die Anzahl Änderungen und Ihr Vertex-Layout in Ihrem Fall würde es aussehen

#if NUMBER_OF_FLOATS > 0 
    float4 Position_1 : TEXCOORD0; 
#endif 
#if NUMBER_OF_FLOATS > 1 
    float4 Position_2 : TEXCOORD1; 
#endif 
#if NUMBER_OF_FLOATS > 2 
    float4 Position_3 : TEXCOORD2; 
#endif 
... 

Natürlich ist dies eine recompling des Shader benötigen würde, muss passen müssen, aber obwohl es nicht die beste Lösung ist es für mich funktioniert:)