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 しか得られません
ご覧のとおり、最後の行と最後の列がどこかにありません。どこが間違っていますか?