dan*_*jar 26 c++ opengl types cross-platform
我有一个简短的问题.为什么OpenGL为标准类型(如int,unsigned int,char等)提供了自己的数据类型?我是否必须使用它们而不是使用C++数据类型构建?
例如OpenGL的相当于unsigned int
是GLuint
和交流串有GLchar*
代替char*
.
Nic*_*las 32
例如OpenGL的相当于
unsigned int
是GLuint
不,不是,这就是为什么在与OpenGL连接时应该使用OpenGL的数据类型.
GLuint
不是"等同于" unsigned int
.GLuint
是需要在尺寸为32位.它总是 32位大小.unsigned int
可能是32位大小.它可能是64位.你不知道,C不会告诉你(除了sizeof
).
这些数据类型将每个平台定义,并且它们可以被定义不同为不同的平台.你使用它们是因为,即使它们的定义不同,它们也总会出现相同的大小.OpenGL API期望和要求的大小.
Avi*_*vio 10
我不是专家OpenGL
,但通常构架/平台,如OpenGL
,Qt
等自己定义的数据类型,这样的意义和基本数据类型的能力仍然在不同的操作系统相同.通常这种行为是使用C/C++预处理器宏获得的,但是对于什么问题GLuint
,它似乎只是typedef
在gl.h
:
typedef unsigned int GLuint;
Run Code Online (Sandbox Code Playgroud)
所以答案是肯定的.您应该使用框架的数据类型来确保跨该操作系统在该框架内的代码具有良好的可移植性.