double zu GLfloat -> static_cast<GLfloat> einzige Möglichkeit?
-
Hab aus Spass mal das Warnlevel des Compilers heruntergestellt, 83 Warnungen

Und zwar hab ich Koordinaten im Typ double vorliegen, OpenGL-Fkt. erwarten aber bekanntermaßen den Typ GLfloat. Ist nun die einzige Möglichkeit, das schön sauber zu lösen
static_cast<GLfloat>(meineKoordinateVomTypDouble)Und das ganze 83mal so zu ändern? Hab zwar eh gerade nichts zu tun, aber ich mein ja nur -
-
Wenn die Warning grundsätzlich eingeschaltet ist, dann musst du auf jeden Fall alle 83 Stellen ändern wo er meckert. Oder eben die eine Warning gezielt abschalten (MSVC: #pragma warning(disable: 4711))
Im übrigen reicht hier auch der (kürzere) function-style-cast:
GLfloat(meineKoordinateVomTypDouble);
-
Ausschalten is klar ^^ Mir war es ja nur langweilig
Danke schonmal! Nur wann sollte man lieber den "function-style" Cast verwenden und wann den "Standard" Cast, bzw. was ist da genau der Unterschied?
-
IMMER die C++-Style-Casts nutzen! Allein schon wegen der Übersichtlichkeit und der Wartungsfähigkeit.
-
The-Kenny schrieb:
IMMER die C++-Style-Casts nutzen! Allein schon wegen der Übersichtlichkeit und der Wartungsfähigkeit.
Der function-style-cast IST ein C++ cast

@MasterCounter:
Ich verwenden den function-style-cast oft wenn ich value Typen (also int/double aber auch std::string o.ä.) caste, und grundsätzlich nur für Konvertierungen die von Natur aus sicher sind. Ob's Unterschiede zu einem static_cast gibt weiss ich nicht, guck im Standard nach
-
hallo,
schön beschrieben.. aber wie kann double* zu GLfloat* konvertieren?
const_cast <GLfloat*>(double*) geht (logischerweise) nicht.brauche es als parameter für glMultMatrixf(GLfloat*m).
OpenGL -> OpenGL ES
vielen dank
-
Vermutlich gar nicht, denn ich rate mal, dass sizeof(GLFLoat) != sizeof(double) sein wird. Das heißt, selbst wenn du die Umwandlung mit einem reinterpret_cast erzwingst, wird nur Murks dabei herauskommen.
-
Wie SeppJ es schon gepostet hat. Es geht nicht. Man kann nur aus der ursprünglichen Matrix aus double eine zweite Matrix mit den Typen GLFloat erzeugen indem man Wert für Wert konvertiert und dann diese Benutzt.
Aber schau die noch mal eine eventuelle Alternative an: "glMultMatrixd" Sieh mal nach ob das bei dir funktionieren könnte.
-
hustbaer schrieb:
Im übrigen reicht hier auch der (kürzere) function-style-cast:
GLfloat(meineKoordinateVomTypDouble);Du hast dich doch sonst gegen diese Art zu casten ausgesprochen?
hustbaer schrieb:
Ob's Unterschiede zu einem static_cast gibt weiss ich nicht, guck im Standard nach

Der Function-Style-Cast macht im Prinzip das gleiche wie der C-Cast. Du kannst also aus Versehen
double*inintumwandeln. Und aus dem gleichen Grund wie beim C-Cast sind auch hier die 4 Schlüsselwörter-Castoperatoren vorzuziehen.
-
Nexus schrieb:
hustbaer schrieb:
Im übrigen reicht hier auch der (kürzere) function-style-cast:
GLfloat(meineKoordinateVomTypDouble);Du hast dich doch sonst gegen diese Art zu casten ausgesprochen?
hustbaer schrieb:
Ob's Unterschiede zu einem static_cast gibt weiss ich nicht, guck im Standard nach

Der Function-Style-Cast macht im Prinzip das gleiche wie der C-Cast. Du kannst also aus Versehen
double*inintumwandeln. Und aus dem gleichen Grund wie beim C-Cast sind auch hier die 4 Schlüsselwörter-Castoperatoren vorzuziehen.Und das ist der Grund, warum ich Threadnekromantie normalerweise sperre: Du diskutierst gerade mit hustbaer von vor 3,5 Jahren.
-
Argh, tut mir echt leid, damit hab ich nicht gerechnet. Lösche von mir aus alle neuen Beiträge
