GLM, OpenGL, VBO, Struct Padding
-
Kann es sein, dass wenn man eine Deklaration so macht:
float x, y, z, w statt float x; float y; ... man vlt. dem Compiler "verbieten" Padding dazwischen zuschieben ?
Ich rate nur, und hoffe innerlich
-
Nein
-
Ja, das ist natürlich doof, warum machen die das so? Ist doch auch totaler Quatsch, meine Vektor Klasse sah irgendwie so aus
template <typename T, std::size_t N> class vector { std::array<T, N> data_; };
Genau genommen war's zwar nur eine Spezialisierung für eine Matrix, aber der Punkt ist, dass man so nicht alles doppelt schreiben muss. Kann ich nicht ganz nachvollziehen was glm da macht.
-
Weil sie die gleiche Schnittstelle wie GLSL bieten wollen. Und in GLSL kann ich nunmal z.B. mit .x, .y, .z auf die Elemente der Vektoren zugreifen. Wenn du einen Weg kennst, um das standardkonform umzusetzen, dann bin ich ganz Ohr, ich such seit Jahren nach so einem Weg...
-
Na ja, ich schreibe halt .x(), .y(), .z(). Dass das wirklich ganz genau so wie GLSL aussieht war mir allerdins nicht sonderlich wichtig. (Ist irgendwie auch kaum sinnvoll? Jeder weis was mit .x() gemeint ist.)
Interessant ist nur noch ob man T x() und void x(T) hat, oder T& x() und const T& x().
-
Jo, damit hast du halt mehr Noise in der Syntax. Ich bevorzuge die Variante mit einzelnen floats. Schön wärs natürlich wenn der Standard ein Layout garantieren würde, aber wenn mir alle nötigen Compiler ein entsprechendes Layout garantieren, dann is das fast genau so gut...
-
dot schrieb:
Jo, damit hast du halt mehr Noise in der Syntax.
Also ob ich x oder x() schreibe, ist mir doch recht egal. Jedenfalls spare ich die ganzen Algorithmen 3 mal zu schreiben. Weiter hat man auch noch einen operator [], und so etwas wie xy(), xz(), ... wie in GLSL ist auch möglich. Ich sehe wirklich keinen Vorteil in einzelnen floats. Aber jedem das Seine.
-
cooky451 schrieb:
dot schrieb:
Jo, damit hast du halt mehr Noise in der Syntax.
Also ob ich x oder x() schreibe, ist mir doch recht egal.
Ja, wenn ich nur ab und zu mal x schreiben würde, wär mir das auch egal. Aber sobald es um irgendwelche komplexeren Ausdrücke geht, also um die Praxis, dann nerven mich die () ziemlich, wär nicht so, dass ich's nicht ausprobiert hätt...
-
#define X x() .. #define X x
-
Makros sind für mich für sowas keine Option...