采用同一副BMP位图(例如砖墙位图),向多个的四边形上进行贴图,不规则的四边形包括不同长度、宽度的矩形,以及梯形。
以前采用下述方式进行贴图:
glTexCoord2f(0.0f,0.0f);
glVertex3f(v1.m_x,v1.m_y,v1.m_z);
glTexCoord2f(1.0f,0.0f);
glVertex3f(v2.m_x,v2.m_y,v2.m_z);glTexCoord2f(1.0f,1.0f);
glVertex3f(v3.m_x,v3.m_y,v3.m_z);
glTexCoord2f(0.0f,1.0f);
glVertex3f(v4.m_x,v4.m_y,v4.m_z);由于不同的矩形的长度、宽度不一致,因此砖墙的纹理不统一,显示效果较差。现在需要将这些纹理的比例在显示上一致,例如一块砖的长度在任何四边形上都保持一致,在OpenGL中该如何设置?
恳请大家指点!
以前采用下述方式进行贴图:
glTexCoord2f(0.0f,0.0f);
glVertex3f(v1.m_x,v1.m_y,v1.m_z);
glTexCoord2f(1.0f,0.0f);
glVertex3f(v2.m_x,v2.m_y,v2.m_z);glTexCoord2f(1.0f,1.0f);
glVertex3f(v3.m_x,v3.m_y,v3.m_z);
glTexCoord2f(0.0f,1.0f);
glVertex3f(v4.m_x,v4.m_y,v4.m_z);由于不同的矩形的长度、宽度不一致,因此砖墙的纹理不统一,显示效果较差。现在需要将这些纹理的比例在显示上一致,例如一块砖的长度在任何四边形上都保持一致,在OpenGL中该如何设置?
恳请大家指点!
glTextParameteri(GL_TEXTURE_WRAP_T, GL_REPEAT);矩形长度和宽度不一致你要根据大小比例设置纹理坐标(纹理坐标不统一),不然纹理会被拉伸,纹理坐标可以设置大于1.0,以便重复显示
glGenTextures(1, &uiBindID);
glBindTexture(GL_TEXTURE_2D, uiBindID);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR);// GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);// GL_NEAREST);
glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &fLargest);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, fLargest);
gluBuild2DMipmaps(GL_TEXTURE_2D,4,lCol,lRow,texFormat,GL_UNSIGNED_BYTE,tc);
wglMakeCurrent(hDC,NULL);
正如楼上所说,矩形的长宽与纹理坐标的大小应该比例一致。
GL_TEXTURE_MAX_ANISOTROPY_EXT,在vc6中需要哪个库支持?
《超级宝典》第三版上有。