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

时间:2012-01-14 18:08:09

标签: c++ opengl

我有一个关于OpenGL glBufferData()方法的问题。我可以在std :: vector,std :: list等结构中传递顶点数据,还是必须是经典([])数组?

2 个答案:

答案 0 :(得分:2)

您必须将经典数组传递给glBufferData()(OpenGL API在C中定义)。但是,您可以使用std :: vector<>将其转换为&v[0]的数组(另请参阅Converting between C++ std::vector and C array without copying)。

答案 1 :(得分:1)

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