我是否必须将OpenGL数据类型(GLint,CLchar,...)用于跨平台游戏?

dan*_*jar 26 c++ opengl types cross-platform

我有一个简短的问题.为什么OpenGL为标准类型(如int,unsigned int,char等)提供了自己的数据类型?我是否必须使用它们而不是使用C++数据类型构建?

例如OpenGL的相当于unsigned intGLuint和交流串有GLchar*代替char*.

Nic*_*las 32

例如OpenGL的相当于unsigned intGLuint

不,不是,这就是为什么在与OpenGL连接时应该使用OpenGL的数据类型.

GLuint不是"等同于" unsigned int.GLuint需要在尺寸为32位.它总是 32位大小.unsigned int 可能是32位大小.它可能是64位.你不知道,C不会告诉你(除了sizeof).

这些数据类型将每个平台定义,并且它们可以被定义不同为不同的平台.你使用它们是因为,即使它们的定义不同,它们也总会出现相同的大小.OpenGL API期望和要求的大小.

  • 我不知道什么是非跨平台的方式,所以我建议不要. (3认同)

Avi*_*vio 10

我不是专家OpenGL,但通常构架/平台,如OpenGL,Qt等自己定义的数据类型,这样的意义和基本数据类型的能力仍然在不同的操作系统相同.通常这种行为是使用C/C++预处理器宏获得的,但是对于什么问题GLuint,它似乎只是typedefgl.h:

typedef unsigned int GLuint;
Run Code Online (Sandbox Code Playgroud)

所以答案是肯定的.您应该使用框架的数据类型来确保跨该操作系统在该框架内的代码具有良好的可移植性.