Warum gibt es GLint und GLfloat? [Duplikat]

7

Ich verstehe, dass Open GL Zahlen verwenden muss, aber warum nicht einfach reguläre Ints und Floats oder die bereits vorhandenen Wrapper-Klassen verwenden (was immer nötig ist, damit die ganze Welt von Open GL gut zusammenpasst)? Gibt es einen Unterschied neben dem Namen und einem Namen, der ausschließlich in Open GL verwendet wird, oder sind sie bei einem anderen Namen so ähnlich?

    
Slayer0248 07.09.2012, 22:52
quelle

1 Antwort

19

Weil ein int (hier zu stark vereinfachend) 32 Bit auf einem 32 Bit System und 64 Bit auf einem 64 Bit System ist - also ist gerade "ein int" kein universelles Konzept. Denken Sie daran, dass die Hardware, auf der der Grafikcode ausgeführt wird, ein anderes Hardwareteil als Ihre CPU ist, und dass neue Typen erforderlich sind. Durch die Verwendung eines eigenen Typedefs kann OpenGL sicherstellen, dass beim Senden der Daten an die Grafikkarte die richtige Anzahl an Bits richtig verpackt wird.

Es wäre möglich, dies mit Konvertierungsfunktionen zu tun, die die Unordnung von "verschiedenen Ints" abstrahieren, aber das würde eine Leistungseinbuße bedeuten, die im Allgemeinen nicht akzeptabel ist, wenn Sie über jede einzelne Zahl sprechen, die zu und von der Grafikkarte.

tl; dr Wenn Sie ein "int" verwenden, schreiben Sie mit der Hardware Ihres Prozessors. Bei Verwendung eines "GLInt" schreiben Sie mit der Hardware Ihrer Grafikkarte.

EDIT: Wie in den Kommentaren auf einem 64-Bit-Prozessor erwähnt, kann int aus Kompatibilitätsgründen 32 Bits haben (und wahrscheinlich auch werden). Historisch gesehen war es durch die 8-, 16- und 32-Bit-Hardware die native Größe des Prozessors, aber technisch gesehen ist es das, was der Compiler bei der Erstellung des Maschinencodes verwendet. Stützen auf @ Nicol Bolas und @ Mark Dickinson

    
Matt 07.09.2012 22:55
quelle