돌을 잘 그리기 위해 원통에 텍스처를 추가하려고합니다. 나는 실린더로 시작해서 돌 질감을 매핑하는데, here을 발견했지만 이상한 결과를 얻고 있습니다. 여기에 내가 사용하고있는 기능입니다 :OpenGL : 실린더 주위의 텍스처 감싸기
void draw_well(double x, double y, double z,
double dx, double dy, double dz,
double th)
{
// Set specular color to white
float white[] = {1,1,1,1};
float black[] = {0,0,0,1};
glMaterialfv(GL_FRONT_AND_BACK,GL_SHININESS,shinyvec);
glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,white);
glMaterialfv(GL_FRONT_AND_BACK,GL_EMISSION,black);
glPushMatrix();
// Offset
glTranslated(x,y,z);
glRotated(th,0,1,0);
glScaled(dx,dy,dz);
// Enable textures
glEnable(GL_TEXTURE_2D);
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);
glBindTexture(GL_TEXTURE_2D,texture[0]); // Stone texture
glBegin(GL_QUAD_STRIP);
for (int i = 0; i <= 359; i++)
{
glNormal3d(Cos(i), 1, Sin(i));
glTexCoord2f(0,0); glVertex3f(Cos(i), -1, Sin(i));
glTexCoord2f(0,1); glVertex3f(Cos(i), 1, Sin(i));
glTexCoord2f(1,1); glVertex3f(Cos(i + 1), 1, Sin(i + 1));
glTexCoord2f(1,0); glVertex3f(Cos(i + 1), -1, Sin(i + 1));
}
glEnd();
glPopMatrix();
glDisable(GL_TEXTURE_2D);
}
// Later down in the display function
draw_well(0, 0, 0, 1, 1, 1, 0);
는 내가받을 출력은 아직도 OpenGL을 꽤 새로 온 사람보다 특별히 텍스처 나의 이해는 매우 제한되어
입니다. 여기 내 생각 과정은 실린더를 만드는 데 사용 된 QUAD
각각에 텍스처를 매핑하는 것이지만 분명히 잘못된 것을하고 있습니다. 이 이상한 출력을 일으키는 원인과 해결 방법에 대한 설명은 크게 감사하겠습니다.
모든 쿼드마다 텍스쳐 좌표를 적용하는 방법이 전체 텍스쳐에 적용됩니다. 그건 분명히 당신이 원하는 것이 아닙니다. – datenwolf