1

重複の可能性:
VBO - 索引付けなしの索引付け

ここに私の問題があります。巨大なモデル (100 万の顔) をレンダリングしたいのですが、顔のインデックス バッファーがあります。

このモデルのテクスチャを自分で生成しました。テクスチャの各領域を各三角形に適用する必要があります。時間がかかりすぎるため、モデルを適切に展開できません。Vertice は複数のテクスチャ座標を持つことができます。

VBO がないと、レンダラーは次のようになります。

glBegin(GL_TRIANGLES);
for (unsigned int i = 0; i < g_pModel->GetNbTriangle(); i++) 
{
    glTexCoord2f(TextCoord[6*i+0],TextCoord[6*i+1]);
    glNormal3f(Normal[3*Triangle[i].x],Normal[3*Triangle[i].x+1],Normal[3*Triangle[i].x+2]);
    glVertex3f(Vertex[Triangle[i].x].x,Vertex[Triangle[i].x].y,Vertex[Triangle[i].x].z);

    glTexCoord2f(TextCoord[6*i+2],TextCoord[6*i+3]);
    glNormal3f(Normal[3*Triangle[i].y],Normal[3*Triangle[i].y+1],Normal[3*Triangle[i].y+2]);
    glVertex3f(Vertex[Triangle[i].y].x,Vertex[Triangle[i].y].y,Vertex[Triangle[i].y].z);

    glTexCoord2f(TextCoord[6*i+4],TextCoord[6*i+5]);
    glNormal3f(Normal[3*Triangle[i].z],Normal[3*Triangle[i].z+1],Normal[3*Triangle[i].z+2]);
    glVertex3f(Vertex[Triangle[i].z].x,Vertex[Triangle[i].z].y,Vertex[Triangle[i].z].z);
}
glEnd();

私のVBOでは、頂点と同じくらい多くのテクスチャ座標が必要なため、glTexCoordPointerを使用できません。これは私の場合ではありません。

VBO と私のシェーダー (私は GLSL を使用しています) でそれを行う方法はありますか?

4

1 に答える 1

3

共有位置の複数のテクスチャ座標の三角形の角を複数の頂点に分解する必要があることは既に説明しました。頂点は常に、特定のテクスチャ上に正確に 1 つのテクスチャ座標を持ちます。テクスチャ座標に違いがあるが、同じ位置にある場合は、異なる頂点があります。

于 2012-12-21T17:15:00.243 に答える