Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我是否必须使用OpenGL数据类型(GLint、CLchar等)进行跨平台游戏?_C++_Opengl_Types_Cross Platform - Fatal编程技术网

C++ 我是否必须使用OpenGL数据类型(GLint、CLchar等)进行跨平台游戏?

C++ 我是否必须使用OpenGL数据类型(GLint、CLchar等)进行跨平台游戏?,c++,opengl,types,cross-platform,C++,Opengl,Types,Cross Platform,我有一个简短的问题。为什么OpenGL为int、unsigned int、char等标准类型提供了自己的数据类型?我必须使用它们而不是C++中的数据类型吗?< /P> 例如,OpenGL等价于unsigned int的是GLuint,而对于c字符串,则是GLchar*而不是char* 例如,相当于unsigned int的OpenGL是GLuint 不,它不是,这正是为什么在与OpenGL交互时应该使用OpenGL的数据类型 GLuint与unsigned int不“等价”GLuint的大小必须

我有一个简短的问题。为什么OpenGL为int、unsigned int、char等标准类型提供了自己的数据类型?我必须使用它们而不是C++中的数据类型吗?< /P> 例如,OpenGL等价于
unsigned int
的是
GLuint
,而对于c字符串,则是
GLchar*
而不是
char*

例如,相当于
unsigned int
的OpenGL是
GLuint

不,它不是,这正是为什么在与OpenGL交互时应该使用OpenGL的数据类型

GLuint
unsigned int
不“等价”
GLuint
的大小必须为32位。它的大小总是32位<代码>无符号整数的大小可能为32位。它可能是64位。您不知道,C也不会告诉您(在
sizeof
之外)


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

我不是OpenGL的专家,但通常框架/平台,如
OpenGL
Qt
等,定义自己的数据类型,以便在不同的操作系统中底层数据类型的含义和容量保持不变。通常,此行为是使用C/C++预处理器宏获得的,但对于所关心的
GLuint
,它似乎只是
gl.h
中的
typedef

typedef unsigned int GLuint;

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

那么我应该只使用OpenGL类型吗?@sharethis:Where?什么时候用什么密码?你在做什么?在与OpenGL对话时,您需要它们。当您将数据传递给OpenGL进行解释时,可以使用它们。你是否在其他地方使用它们取决于你。因此,如果我在自己的游戏类中使用simple
int
,就不会有跨平台问题了?我不知道什么是非跨平台方式,所以我建议不要。@CiroSantilli六四事件法轮功包卓轩: 嗯,因为代码> UTI32 32 t < /COD>及其ILK不是C或C++标准所要求的,我猜不是。