std::vector的sizeof实例返回了向量中错误数量的元素



我有一个循环,它定义了GLfloat顶点坐标的向量。(三个1.0f浮动描述颜色,这无关紧要(

std::vector<GLfloat> verticesUnitPoints;
float xCurrent = -1.0f;
for (int i = 0; i <= 8; i++)
{
float yOffset = 0.01f;
//first vertex
verticesUnitPoints.push_back(xCurrent);
verticesUnitPoints.push_back(yOffset);
verticesUnitPoints.push_back(0.0f);
verticesUnitPoints.push_back(1.0f);
verticesUnitPoints.push_back(1.0f);
verticesUnitPoints.push_back(1.0f);
//second vertex
verticesUnitPoints.push_back(xCurrent);
verticesUnitPoints.push_back(-yOffset);
verticesUnitPoints.push_back(0.0f);
verticesUnitPoints.push_back(1.0f);
verticesUnitPoints.push_back(1.0f);
verticesUnitPoints.push_back(1.0f);
xCurrent += 0.25f;
}

我还有一个glBufferData函数,它必须为所有向量元素创建一个有足够位置的缓冲区。

glBufferData(GL_ARRAY_BUFFER, sizeof(verticesUnitPoints) * sizeof(GLfloat), &verticesUnitPoints[0], GL_STATIC_DRAW);

但正如我在输出窗口中看到的,只有一小部分顶点被渲染。

我只需增加sizeof(verticalsUnitPoints(的倍数就可以很容易地解决这个问题,但我觉得这个解决方案很糟糕。

sizeof(verticesUnitPoints)返回std::vector类(而非实例(的大小,该大小对于任何数量的元素都是固定的。

为了获得这个数字,使用成员函数std::vector::size(verticesUnitPoints.size()(

最新更新