Hello everyone.
I want to use interior of the cube (made from QUADS) to display textured “horizon”. Well as long as I use GL_NEAREST filtering, everything looks OK:
However, if I try GL_LINEAR filtering I can see lines on edges of the cube:
Of course, I want to use linear filtering because of much better quality - but I don’t know how to get rid of this annoying lines. I already tried setting:
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_R,GL_CLAMP)
But it didn’t help (or maybe I didn’t set it correctly…?). Please help.
Here is the code I use to draw a cube (I use QT-4.6 framework with Debian Stable):
void testGL::colorCubeQuad5(GLfloat size)
{
if(size<=0)
{
std::cerr << "Wrong size for colorcube!";
return;
}
GLfloat half=size/2.0;
//dol
glBindTexture(GL_TEXTURE_2D,textures[1]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_R,GL_CLAMP);
glBegin(GL_QUADS);
{
glColor3f(1.0f,1.0f,1.0f);//Red
glTexCoord2f(1.0f,0.0f);
glVertex3f(half,-half,half);
glTexCoord2f(1.0f,-1.0f);
glVertex3f(half,-half,-half);
glTexCoord2f(0.0f,-1.0f);
glVertex3f(-half,-half,-half);
glTexCoord2f(0.0f,0.0f);
glVertex3f(-half,-half,half);
}glEnd();
//gora
glBindTexture(GL_TEXTURE_2D, textures[4]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_R,GL_CLAMP);
glBegin(GL_QUADS);
{
glColor3f(1.0f,1.0f,1.0f);//Red
glTexCoord2f(1.0f,0.0f);
glVertex3f(-half,half,half);
glTexCoord2f(1.0f,-1.0f);
glVertex3f(-half,half,-half);
glTexCoord2f(0.0f,-1.0f);
glVertex3f(half,half,-half);
glTexCoord2f(0.0f,0.0f);
glVertex3f(half,half,half);
}glEnd();
//przod
glBindTexture(GL_TEXTURE_2D, textures[5]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_R,GL_CLAMP);
glBegin(GL_QUADS);
{
glColor3f(1.0f,1.0f,1.0f);//Red
glTexCoord2f(1.0f,0.0f);
glVertex3f(-half,-half,half);
glTexCoord2f(1.0f,-1.0f);
glVertex3f(-half,half,half);
glTexCoord2f(0.0f,-1.0f);
glVertex3f(half,half,half);
glTexCoord2f(0.0f,0.0f);
glVertex3f(half,-half,half);
}glEnd();
//tyl
glBindTexture(GL_TEXTURE_2D, textures[2]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_R,GL_CLAMP);
glBegin(GL_QUADS);
{
glColor3f(1.0f,1.0f,1.0f);//Red
glTexCoord2f(0.0f,0.0f);
glVertex3f(half,-half,-half);
glTexCoord2f(0.0f,-1.0f);
glVertex3f(half,half,-half);
glTexCoord2f(-1.0f,-1.0f);
glVertex3f(-half,half,-half);
glTexCoord2f(-1.0f,0.0f);
glVertex3f(-half,-half,-half);
}glEnd();
//lewa
glBindTexture(GL_TEXTURE_2D, textures[3]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_R,GL_CLAMP);
glBegin(GL_QUADS);
{
glColor3f(1.0f,1.0f,1.0f);//Red
glTexCoord2f(0.0f,0.0f);
glVertex3f(-half,-half,-half);
glTexCoord2f(0.0f,-1.0f);
glVertex3f(-half,half,-half);
glTexCoord2f(-1.0f,-1.0f);
glVertex3f(-half,half,half);
glTexCoord2f(-1.0f,0.0f);
glVertex3f(-half,-half,half);
}glEnd();
//prawa
glBindTexture(GL_TEXTURE_2D, textures[0]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_R,GL_CLAMP);
glBegin(GL_QUADS);
{
glColor3f(1.0f,1.0f,1.0f);//Red
glTexCoord2f(0.0f,0.0f);
glVertex3f(half,-half,half);
glTexCoord2f(0.0f,-1.0f);
glVertex3f(half,half,half);
glTexCoord2f(-1.0f,-1.0f);
glVertex3f(half,half,-half);
glTexCoord2f(-1.0f,0.0f);
glVertex3f(half,-half,-half);
}glEnd();
}
Thanks in advance.