我需要为 GL_TRIANGLE_STRIP 渲染创建一个网格。
我的网格只是一个:
- 职位(不言自明)
- 尺寸(x,y 尺寸)
- 分辨率(x,y 中每个顶点之间的间距)
这是用于创建顶点/索引并返回它们的方法:
int iCols = vSize.x / vResolution.x;
int iRows = vSize.y / vResolution.y;
// Create Vertices
for(int y = 0; y < iRows; y ++)
{
for(int x = 0; x < iCols; x ++)
{
float startu = (float)x / (float)vSize.x;
float startv = (float)y / (float)vSize.y;
tControlVertex.Color = vColor;
tControlVertex.Position = CVector3(x * vResolution.x,y * vResolution.y,0);
tControlVertex.TexCoord = CVector2(startu, startv - 1.0 );
vMeshVertices.push_back(tControlVertex);
}
}
// Create Indices
rIndices.clear();
for (int r = 0; r < iRows - 1; r++)
{
rIndices.push_back(r*iCols);
for (int c = 0; c < iCols; c++)
{
rIndices.push_back(r*iCols+c);
rIndices.push_back((r+1)*iCols+c);
}
rIndices.push_back((r + 1) * iCols + (iCols - 1));
}
为了形象化,先举几个例子。
1) 尺寸 512x512 分辨率 64x64,所以它应该由 8 x 8 四边形组成,但我只得到 7x7
2) 尺寸 512x512 分辨率 128x128,所以它应该由 4 x 4 四边形组成,但我只得到 3x3
3) 尺寸 128x128 分辨率 8x8 所以它应该由 16 x 16 四边形组成,但我只得到 15x15
如您所见,我在某处缺少最后一行和最后一列。我哪里错了?