OpenGL类型GLint、Glbyte..到C++int32_t,int8_t..映射

OpenGL types GLint, Glbyte... to C++ int32_t, int8_t... mapping

本文关键字:int8 映射 C++int32 类型 GLint Glbyte OpenGL      更新时间:2023-10-16

OpenGL规范规定所有类型都有固定的位深度。正如我所知,c++规范并没有规定比特深度。我们只知道一件事:像int32_t、int16_t这样的c++类型,。。。包含所需的字节数,但不包含位。我们如何安全地使用这些类型?我们如何确定OpenGL类型的"无符号整数"在二进制表示级别上与uint32_t匹配?

我们只知道一件事:像int32_t、int16_t这样的c++类型,。。。包含所需的字节数,但不包含位。

那根本不是真的。C++标准引入的C标准规定:

typedef名称intN_t指定一个带符号的整数类型,宽度N,没有填充位。。。

N是的数目,而不是字节的数目。

OpenGL标准类似地用精确的位数而不是字节来定义其类型。两者都不允许填充。

因此,相对于uint32_tGLuint的大小和格式必须相同。它们不必是完全相同的类型,但由于它们存储的值范围相同,大小也相同,因此它们之间的转换应该是无损的。

所以现在还不清楚你关心的是什么。