2013-11-23 5 views
1

나는 구를 통해 지구를 그리는 텍스처를 사용하려고합니다. 내 영역은 쿼드로 구성되며 각 쿼드는 두 개의 삼각형으로 구성됩니다.Opengl : 지구 텍스처링

void Sphere(float radius, int n_lat, int n_lon) 
{ 
    glEnable(GL_LIGHTING); 
glEnable(GL_TEXTURE_2D); 

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 

    TextureManager::Inst()->BindTexture(1); 

    glBegin(GL_TRIANGLES); 
for (float i = 0; i < n_lat; i += 1.f) 
    for (float j = 0; j < n_lon; j += 1.f) 
    { 
     Vector3 p; 
     GLfloat u; 
     GLfloat v; 
     // -- first triangle 
     p = SphereCoord(i, j, n_lat, n_lon); 
       glNormal3(p); 

     u=atan2f(p.y,p.x)/2*PI+0.5; 
     v=0.5-asinf(p.z)/PI; 
     glTexCoord2f(u,v); 

     glVertex3(p * radius); 

     p = SphereCoord(i + 1, j, n_lat, n_lon); 
     glNormal3(p); 

     u=atan2f(p.y,p.x)/2*PI+0.5; 
     v=0.5-asinf(p.z)/PI; 
     glTexCoord2f(u,v); 

     glVertex3(p * radius); 


     p = SphereCoord(i + 1, j + 1, n_lat, n_lon); 
     glNormal3(p); 

     u=atan2f(p.y,p.x)/2*PI+0.5; 
     v=0.5-asinf(p.z)/PI; 
     glTexCoord2f(u,v); 

     glVertex3(p * radius); 



     // -- second triangle 
     p = SphereCoord(i, j, n_lat, n_lon); 
       glNormal3(p); 

     u=atan2f(p.y,p.x)/2*PI+0.5; 
     v=0.5-asinf(p.z)/PI; 
     glTexCoord2f(u,v); 

     glVertex3(p * radius); 



     p = SphereCoord(i + 1, j + 1, n_lat, n_lon); 
     glNormal3(p); 

     u=atan2f(p.y,p.x)/2*PI+0.5; 
     v=0.5-asinf(p.z)/PI; 
     glTexCoord2f(u,v); 

     glVertex3(p * radius); 



     p = SphereCoord(i, j + 1, n_lat, n_lon); 
     glNormal3(p); 

     u=atan2f(p.y,p.x)/2*PI+0.5; 
     v=0.5-asinf(p.z)/PI; 
     glTexCoord2f(u,v); 

     glVertex3(p * radius); 
} 
glEnd(); 
} 

이 코드를 사용하면 올바른 텍스처 매핑을 얻지 못합니다. 누구든지 내게 몇 가지 조언을 줄 수 있습니까?

는 텍스처가 어떻게든지 경도 축에 반복 인 것 같습니다 : Image of the earth

+0

고정 기능 파이프 라인 기능 사용을 중단하고 최신 기능 및 비 권장 기능을 사용해야합니다. – Vallentin

+0

@ user1071138 [Google에 알려주세요] (http://bit.ly/17DwR2e) – Drop

+0

내 문제는 구체가 아니고 텍스처입니다 ... 경도 축에서 반복되는 것처럼 보입니다. – user1071138

답변

0

문제는 당신의 U의 당신의 계산에 : 다음 곱한

u=atan2f(p.y,p.x)/2*PI+0.5; 

당신은 2하여 다이빙입니다 PI에 의한 결과. 2와 PI로 다이빙을해야합니다.