2014-04-16 8 views
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(); 

}

이 방법을 사용하여, 나는 새로운 삼각형을 그릴 때마다 내가 옆에있는 하나의 두 정점을 반복합니다. 매번 삼각형의 꼭지점을 반복하지 않아도 텍스처가있는 지형을 그릴 수 있습니까?

+0

최신 OpenGL을 사용하면 도움이됩니다. 절대적으로 필요한 경우가 아니면 사용해서는 안되는 사용되지 않는 기능을 사용하고 있습니다. Google glDrawArrays 또는 glDrawElements. –

답변

1

정점 색인. 대부분의 예제는 더 이상 유효한 OpenGL이 아닙니다. 나는 효율성에 대해 염려하는 것처럼 보이기 때문에 현대의 OpenGL을 배우는 것이 좋습니다. 이렇게하면 실제로 정점을 인덱싱하고 OpenGL에게 그릴 정점과 그 시점을 알려줍니다.

Jean-Simon이 말한 것처럼 glDrawArrays, glDrawElements 및 buffer 객체를 찾습니다.