除了数组之外,glBufferData()还可以接受哪些容器类型

What container types glBufferData() can accept besides an array?

本文关键字:类型 还可以 数组 glBufferData      更新时间:2023-10-16

我有一个关于OpenGL glBufferData()方法的问题。我可以用std::vector、std::list等结构传递顶点数据吗?或者它必须是一个经典的([])数字数组?

您必须将一个经典数组传递给glBufferData()(OpenGL API在C中定义)。但是,您可以使用std::vector<>通过使用&v[0]将其转换为数组(另请参阅在C++std::vector和C数组之间转换而不复制)。

它基本上需要一个数组。您应该能够使用std::vector,因为它需要连续存储。包括std::list在内的大多数其他方法都不起作用。对于std::list,它需要被编写为跟随指针,并且对内部有足够的了解才能找到指针——但这可能在不同的实现中有所不同,甚至可能通过在同一实现中传递不同的标志而改变。