我有一个关于OpenGL glBufferData()方法的问题。我可以在std :: vector,std :: list等结构中传递顶点数据,还是必须是经典([])数组?
答案 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
,需要编写跟随指针,并且足够了解内部能够找到指针 - 但这可能在实现之间有所不同,甚至可能通过传递不同的标志来改变同样的实施。