Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在不重绘顶点的情况下对三角形地形进行纹理处理_C++_Opengl_Textures_Triangulation_Terrain - Fatal编程技术网

C++ 在不重绘顶点的情况下对三角形地形进行纹理处理

C++ 在不重绘顶点的情况下对三角形地形进行纹理处理,c++,opengl,textures,triangulation,terrain,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 &

我正在制作一个程序来显示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();
}

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

顶点索引。您的大多数示例不再是有效的opengl。我建议您学习现代opengl,因为您似乎很关心效率。这将允许您实际索引顶点,并告诉opengl要绘制什么顶点以及何时绘制


正如Jean Simon所说,查找GLDrawArray、glDrawElements和buffer对象。

使用现代OpenGL会让您受益匪浅。您正在使用不推荐使用的函数,除非绝对必要,否则不应使用这些函数。谷歌GLDrawArray或glDrawElements。