纹理化三角形地形而不重绘顶点

时间:2014-04-16 19:31:59

标签: c++ opengl textures triangulation terrain

我正在制作一个程序,显示3D纹理地形。我有一些性能问题。我正在绘制地形并同时对其进行纹理化 - >

void Triangle::drawTriangle( int showTexture){

if (textureId!=0 && showTexture) glBindTexture(GL_TEXTURE_2D, textureId);    // Select Our Texture

glBegin( GL_TRIANGLES );
    if (textureId!=0 && showTexture)
         glTexCoord2d(((Point3DTexturable*)p1)->getU(), ((Point3DTexturable*)p1)->getV());
    glVertex3d(p1->getX(), p1->getY(), p1->getZ());

    if (textureId!=0 && showTexture)
           glTexCoord2d(((Point3DTexturable*)p2)->getU(), ((Point3DTexturable*)p2)->getV());
    glVertex3d(p2->getX() , p2->getY(), p2->getZ());

    if (textureId!=0 && showTexture)
           glTexCoord2d(((Point3DTexturable*)p3)->getU(), ((Point3DTexturable*)p3)->getV());
    glVertex3d(p3->getX() , p3->getY() , p3->getZ());
glEnd();

}

使用这种方法,每次绘制一个新的三角形时,我都会重复它旁边的两个顶点。 如何绘制纹理地形而不必每次都重复三角形的顶点?

1 个答案:

答案 0 :(得分:1)

顶点索引。您的大部分示例都不再是有效的opengl。我建议学习现代opengl,因为好像你关注效率。这将允许您实际索引顶点,并告诉opengl您要绘制什么顶点以及何时绘制。

正如Jean-Simon所说,查找glDrawArrays,glDrawElements和缓冲对象。