Dois-je utiliser les types de données OpenGL (GLint, CLchar, ...) pour un jeu multi-plateforme?

j'ai une petite question. Pourquoi OpenGL dispose-t-il de ses propres types de données pour les types standards tels que int, unsigned int, char, etc.? Et dois-je les utiliser à la place des types de données c++?

par exemple L'équivalent OpenGL de unsigned intGLuint et pour une chaîne c il y a GLchar* au lieu de char*.

25
demandé sur danijar 2012-09-05 20:05:22
la source

2 ответов

par exemple L'équivalent OpenGL de unsigned intGLuint

Non, ce n'est pas le cas, et c'est exactement pourquoi vous devez utiliser les types de données D'OpenGL lors de l'interfaçage avec OpenGL.

GLuint n'est pas "équivalente" à unsigned int. GLuint 32 bits. C'est toujours 32-bits en taille. unsigned int 32-bits. Il pourrait être 64-bits. Tu ne sais pas, et C ne l'est pas. va vous dire (en dehors de sizeof).

Ces types de données seront définis pour chaque plate-forme, et ils peuvent être définis autrement pour différentes plateformes. Vous les utilisez, parce que, même s'ils sont définis différemment, ils sont toujours les mêmes tailles. Les tailles que OpenGL APIs attendent et exigent.

32
répondu Nicol Bolas 2012-09-05 20:09:34
la source

je ne suis pas un expert de OpenGL, mais habituellement cadres / plates-formes tels que OpenGL,Qt, etc. définissez leurs propres types de données de manière à ce que la signification et la capacité du type de données sous-jacent restent les mêmes pour différents OS. Habituellement ce comportement est obtenu en utilisant des macros préprocesseur C / C++, mais pour ce qui concerne GLuint, il semble être juste un typedefgl.h:

typedef unsigned int GLuint;

Donc la réponse est oui. Vous devez utiliser les types de données pour assurer une bonne portabilité de votre code dans ce cadre à travers les os.

10
répondu Avio 2012-09-05 20:14:59
la source

Autres questions sur