我正在嘗試向圓柱體中添加紋理以便很好地繪製一塊石頭。我先從一個圓柱體開始,然後繪製一塊石頭紋理,我發現它有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