我想使用Slick的Texture類將兩個不同的紋理綁定到一個立方體。 的問題是,我綁定到立方體的第一紋理顯示正確的,即按像素而另外一個我綁定到立方體的兩側是模糊的,因爲如果我沒有進入一個光滑的紋理模糊,一個不是
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
這是如果要同時紋理是「模糊」正如你所說,你需要在每個紋理單獨綁定,並調用以下功能呈現立方體
public void render(){
float x = coordinate.x;
float y = coordinate.y;
float z = coordinate.z;
top.bind();
glBegin(GL_QUADS);
//TOP
glNormal3f(0f, 1f, 0f);
glTexCoord2f(0f, 0f);
glVertex3f(x,y,z);
glTexCoord2f(0f, 1f);
glVertex3f(x, y, z+1);
glTexCoord2f(1f, 1f);
glVertex3f(x+1, y, z+1);
glTexCoord2f(1f, 0f);
glVertex3f(x+1, y, z);
glEnd();
bottom.bind();
glBegin(GL_QUADS);
//BOTTOM
glNormal3f(0f, -1f, 0f);
glTexCoord2f(0f, 0f);
glVertex3f(x,y-1,z);
glTexCoord2f(0f, 1f);
glVertex3f(x, y-1, z+1);
glTexCoord2f(1f, 1f);
glVertex3f(x+1, y-1, z+1);
glTexCoord2f(1f, 0f);
glVertex3f(x+1, y-1, z);
glEnd();
sides.bind();
glBegin(GL_QUADS);
//BACK
glNormal3f(0,0,-1);
glTexCoord2f(0f, 0f);
glVertex3f(x,y,z);
glTexCoord2f(1f, 0f);
glVertex3f(x+1, y, z);
glTexCoord2f(1f, 1f);
glVertex3f(x+1, y-1, z);
glTexCoord2f(0f, 1f);
glVertex3f(x, y-1, z);
//FRONT
glNormal3f(0,0,1);
glTexCoord2f(0f, 0f);
glVertex3f(x,y,z+1);
glTexCoord2f(1f, 0f);
glVertex3f(x+1, y, z+1);
glTexCoord2f(1f, 1f);
glVertex3f(x+1, y-1, z+1);
glTexCoord2f(0f, 1f);
glVertex3f(x, y-1, z+1);
//LEFT
glNormal3f(-1,0,0);
glTexCoord2f(0f, 0f);
glVertex3f(x,y,z);
glTexCoord2f(0f, 1f);
glVertex3f(x, y-1, z);
glTexCoord2f(1f, 1f);
glVertex3f(x, y-1, z+1);
glTexCoord2f(1f, 0f);
glVertex3f(x, y, z+1);
//RIGHT
glNormal3f(1,0,0);
glTexCoord2f(0f, 0f);
glVertex3f(x+1,y,z);
glTexCoord2f(0f, 1f);
glVertex3f(x+1, y-1, z);
glTexCoord2f(1f, 1f);
glVertex3f(x+1, y-1, z+1);
glTexCoord2f(1f, 0f);
glVertex3f(x+1, y, z+1);
glEnd();
}
您是否爲這兩種紋理調用glTexParameteri? –
我必須嗎?我應該在哪裏致電?加載紋理後? – user1839433
是的,你需要爲每個紋理。這不是一個全球性的設置。在調用glBindTexture之後執行它。 –