5

OpenGL 定义了自己的数据类型。比如GLintGLsizei。而且它们在不同平台上是不同的。我在哪里可以找到类型的限制?

编辑

添加了语言标签以阐明域。而且我知道 GL* 类型将被解析为基本的 C 类型,但它可能因平台而异。(实际上这就是定义它们的原因。)即使是基本的 C 类型也不能保证在任何平台上都是固定大小的。这limit.h就是存在的原因,我希望 GL 本身对于 GL* 类型也有类似的东西,因为它们在语义上与 C 类型不同,这意味着它们需要自己的限制定义。

4

2 回答 2

3

编辑:请注意,正如 pmr 从 OpenGL 规范中指出的那样,不能保证GLintGLsizei将始终定义为int. GLint并且GLsizei只保证至少为32 位。

来自 GL/gl.h

typedef int GLint;
typedef int GLsizei;

这些类型是 int 的,大小根据平台而定。要获得最小值和最大值,您可以使用 INT_MIN 和 INT_MAX ,它们应该在 limits.h 中找到(假设 C )。

于 2012-08-17T19:43:09.277 回答
3

假设您使用的是 C++,您可以使用它std::numeric_limits<GLint>::max()来获取类型或该类型的任何其他属性的正确最大值。

该规范不保证它GLint实际上是在任何平台上,但只保证它是一个至少 32 位宽的有符号整数类型,因此 MAX_INT是实际上是 32 位宽int的平台上的下限(例如)。intx86_64

于 2012-08-17T20:02:53.073 回答