如果我有一个std::vector<Foo>并想将其大小存储在GLuint中,则我的编译器会发出警告,提示可能会丢失数据。
是否存在更多此类陷阱,例如floatGLfloat

#1 楼

实际上,可能不是-尝试使用sizeof打印每种类型的大小。大概GLuint是32位,size_t是64位-因此抛出32位;但是float和GLfloat可能都是32位IEEE 754数字。上面的“大概”是散布的,因为从技术上讲C ints,float和float格式的大小取决于编译器,但是GL类型的大小(和格式)应该是标准的(请参阅https://www.opengl.org/wiki/OpenGL_Type )。 GLfloat可能只是类型定义为浮点数。

您可以在编译器中关闭此警告-我选择显式强制转换(“ ))“有效),让我想起发生了什么事。