【发布时间】:2018-02-05 00:25:01
【问题描述】:
是否有一种算法可用于使用 GL_TRIANGLES 原始类型生成平面?
这是我当前的功能:
Mesh* Mesh::CreateMeshPlane(vec2 bottomleft, ivec2 numvertices, vec2 worldsize){
int numVerts = numvertices.x * numvertices.y;
float xStep = worldsize.x / (numvertices.x - 1);
float yStep = worldsize.y / (numvertices.y - 1);
VertexFormat* verts = new VertexFormat[numVerts];
for (int y = 0; y < numvertices.y; y++)
{
for (int x = 0; x < numvertices.x; x++)
{
verts[x + (y * numvertices.x)].pos.x = bottomleft.x + (xStep * x);
verts[x + (y * numvertices.x)].pos.y = bottomleft.y + (yStep * y);
verts[x + (y * numvertices.x)].pos.z = 0;
}
}
Mesh* pMesh = new Mesh();
pMesh->Init(verts, numVerts, indices, 6, GL_STATIC_DRAW);
glPointSize(10.0f);
pMesh->m_PrimitiveType = GL_POINTS;
delete[] verts;
return pMesh;}
我只是不确定如何在 for 循环中实现索引以便能够知道要绘制哪些点。
我认为我需要知道的:
每个正方形由 2 个三角形组成,每个正方形需要 6 个索引
目前我是从左下角开始画的
我需要知道传入的数字中有多少个正方形
【问题讨论】:
-
对于像这样的情况,我手头有一个记事本和一支笔——画一个草图来可视化它。
-
每当我画一个平面时,我只画一个有 4 个顶点的 GL_TRIANGLE_STRIP(做一个正方形),然后我使用模型矩阵来画一个更大的平面
-
我不确定你在问什么。您想知道如何为您在循环中生成的三角形生成索引吗?
-
所以目前在我的双循环中,我只是根据我传入的内容使用 GL_POINTS 创建一个点网格。我想要做的是使用我绘制的顶点out 在创建一个正方形平面的索引列表中,其中每个正方形由 2 个三角形(6 个索引)组成