OpenGL GLint,GLsizei限制?

时间:2012-08-17 19:32:38

标签: c opengl types limit

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

修改

添加语言标记以澄清域名。我知道GL *类型将被解析为基本的C类型,但它可以通过平台不同。 (实际上这就是他们被定义的原因。)甚至基本的C类型也不能保证在任何平台上都是固定大小的。这就是limit.h存在的原因,我期望GL本身对于GL *类型也有类似的东西,因为它们在语义上与C类型不同,这意味着它们需要自己的限制定义。

2 个答案:

答案 0 :(得分:3)

编辑:请注意,当pmr从OpenGL规范中指出时,无法保证GLintGLsizei始终定义为intGLintGLsizei仅保证位于至少 32位。

来自GL / gl.h

typedef int GLint;
typedef int GLsizei;

这些类型是int并根据平台调整大小。要获取最小值和最大值,可以使用应在limits.h中找到的INT_MIN和INT_MAX(假设为C)。

答案 1 :(得分:3)

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

规范并不保证GLint在任何平台上实际上都是int,而只是它是一个至少32位宽的有符号整数类型,所以MAX_INT是平台上较小的大小其中int实际上是32位宽(例如x86_64)。