OpenGL定义了自己的数据类型,例如GLint
或GLsizei
。而且它们在不同平台上是不同的。那么我在哪里可以找到这些类型的限制呢?
编辑
添加语言标签以澄清领域。我知道GL *类型将被解析为基本的C类型,但在不同的平台上可能不同(实际上这就是它们被定义的原因)。即使是基本的C类型也不能保证在任何平台上都具有固定的大小。这就是为什么存在limit.h
,并且我希望GL本身也有类似的东西,用于定义GL *类型的限制,因为它们与C类型在语义上是不同的,这意味着它们需要自己的限制定义。
OpenGL定义了自己的数据类型,例如GLint
或GLsizei
。而且它们在不同平台上是不同的。那么我在哪里可以找到这些类型的限制呢?
添加语言标签以澄清领域。我知道GL *类型将被解析为基本的C类型,但在不同的平台上可能不同(实际上这就是它们被定义的原因)。即使是基本的C类型也不能保证在任何平台上都具有固定的大小。这就是为什么存在limit.h
,并且我希望GL本身也有类似的东西,用于定义GL *类型的限制,因为它们与C类型在语义上是不同的,这意味着它们需要自己的限制定义。
std :: numeric_limits< GLint> :: max()来获取类型的正确最大值或任何其他属性。
规范并不保证 GLint 实际上是任何平台上的 int ,而只是至少为32位宽度的带符号整数类型,因此MAX_INT是在 int 实际上为32位宽度(例如 x86_64 )的平台上的较低大小限制。
编辑:请注意,正如OpenGL规范中pmr指出的那样,不能保证GLint
或GLsizei
始终定义为int
。只保证GLint
和GLsizei
至少为32位。
来自GL/gl.h
typedef int GLint;
typedef int GLsizei;
这些类型是int类型,大小根据平台而定。要获取最小和最大值,可以使用INT_MIN和INT_MAX,这些值应该在limits.h中找到(假设使用C语言)。
GLint
都将是一个 int
。其大小可能会随着 INT_MIN 和 INT_MAX 的变化而改变。 - Chimera