std::vector<Foo>
并想将其大小存储在GLuint
中,则我的编译器会发出警告,提示可能会丢失数据。 是否存在更多此类陷阱,例如
float
至GLfloat
?#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可能只是类型定义为浮点数。您可以在编译器中关闭此警告-我选择显式强制转换(“ ))“有效),让我想起发生了什么事。