【发布时间】:2023-03-23 05:38:01
【问题描述】:
我有一个名为lineVertices 的线的顶点向量,我将传递这个数据来绘制一个OpenGL 形状,所以这个向量必须是数组的形式,我假设。我试过以下代码:
float* lineArray = new float[lineVertices.size()]();
for (unsigned i = 0; i < lineVertices.size(); i++) {
lineArray[i] = lineVertices.at(i);
}
但是,向量的每个元素似乎只分配给数组的第一个元素。即使lineArray 标识符是指向第一个元素的指针,还有其他方法可以访问动态数组的不同元素吗?
如果有帮助,当我调试时,它说lineArray 的大小始终为1,尽管lineVertices' 的大小明显大于1。
我也试过下面的代码,但这也行不通。
float* lineArray = &lineVertices[0];
感谢任何帮助!
【问题讨论】:
-
这里有一些帮助:阅读帮助中心文章,了解如何组装minimal reproducible example,然后相应地编辑您的问题。
-
您将向量/数组传递给什么特定的 OpenGL 函数?你现在怎么称呼它?
-
所以这个向量必须是数组的形式 -- 嗯??只需调用
vector::data()函数,您就知道vector具有您正在寻找的array吗? -
@PaulMcKenzie 显然不是,这就是他们问这个问题的原因......你为什么不回答解释误解而不是不那么巧妙地侮辱 OP?我在 SO 上看到太多你类型的 cmets。 Be nice.
-
代码使用
new[]使用向量中的条目数清楚地创建浮点数组,然后设置循环中的每个条目(您可以使用std::copyBTW)。因此,我认为这段代码没有任何问题(除了由于向量具有vector::data()函数来获取数组而无需执行任何操作)。我认为您误解了调试器向您显示的内容。