Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Nicht unlogisch, sondern genau so, wie es die Spezifikation vorsieht:
Spezifikation von GLSL #version 330 hat geschrieben:
Scalar constructors with non-scalar parameters can be used to take the first element from a non-scalar. For example, the constructor float(vec3) will select the first component of the vec3 parameter.
(Abschnitt 5.4.1 "Conversion and Scalar Constructors")
Im Grunde ist es nur konsequent, dass die Spezifikation dies erlaubt. Ein float ist ja sozusagen ein "vec1". Und auf die gleiche Weise kannst du ja auch bei einem vec3 oder vec4 die letzten Komponenten "abschneiden":
Code:
vec3 three =vec3(1.0,2.0,3.0);
vec4 four =vec4(1.0,2.0,3.0,4.0);
vec2 two =vec2(three);// two = three.xy
two =vec2(four);// two = four.xy
float one =float(four);// geht halt auch
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.