我正在嘗試沿任意高度細分的對象(STL導入)的Z軸添加一個簡單的重複陰影漸變(認爲疊層)。OpenGL:GL_TEXTURE_1D麻煩
它主要工作,但我得到一些非常奇怪的面孔,紋理不平行於Z,但旋轉和縮放不同。這些面通常(可能總是)垂直取向,有些相當大。我會認爲垂直的面孔是最容易應用的...所以我目前很難過。
這裏的初始化:
glBindTexture(GL_TEXTURE_1D, _d->textures[0]);
glTexParameterf(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); //GL_DECAL);
glTexImage1D(GL_TEXTURE_1D, 0, GL_RGB, _d->sideImage.width(), 0,
GL_BGRA_EXT, GL_UNSIGNED_BYTE, _d->sideImage.bits());
而且在使用中:
glEnable(GL_TEXTURE_1D);
foreach(const STLTriangle& t, _model.triangles())
{
glBegin(GL_TRIANGLES);
glNormal3f(t.normal[0], t.normal[1], t.normal[2]);
glTexCoord1f(fmod(t.v[0][2],1.0)); glVertex3f(t.v[0][0],t.v[0][1],t.v[0][2]);
glTexCoord1f(fmod(t.v[1][2],1.0)); glVertex3f(t.v[1][0],t.v[1][1],t.v[1][2]);
glTexCoord1f(fmod(t.v[2][2],1.0)); glVertex3f(t.v[2][0],t.v[2][1],t.v[2][2]);
glEnd();
}
glDisable(GL_TEXTURE_1D);
有誰看到一些錯誤,我怎麼回事這件事?
「我得到一些非常奇怪的臉」Screenshots,pleases。 「 」fmod(t.v [0] [2],1.0)「你可能不需要這個。 – SigTerm 2010-07-14 06:37:51
好吧,我曾經認爲GL_REPEAT意味着我不......但是如果我忽略掉fmod(),那麼我會沿着Z軸獲得真正奇怪的紋理線性比例縮放。那裏可能有線索,但我在凌晨1點看不到它。 :) – darron 2010-07-14 13:37:07