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();
}
이 코드를 사용하면 올바른 텍스처 매핑을 얻지 못합니다. 누구든지 내게 몇 가지 조언을 줄 수 있습니까?
는 텍스처가 어떻게든지 경도 축에 반복 인 것 같습니다 :
고정 기능 파이프 라인 기능 사용을 중단하고 최신 기능 및 비 권장 기능을 사용해야합니다. – Vallentin
@ user1071138 [Google에 알려주세요] (http://bit.ly/17DwR2e) – Drop
내 문제는 구체가 아니고 텍스처입니다 ... 경도 축에서 반복되는 것처럼 보입니다. – user1071138