hello guys, is it true that opengl only support texture in square?
i’m working on my 3d modeller which allows people to choose an image as reference, and i can’t guarantee that the image is in square. my program is ok if the image i specified is in square but becomes very weird if it is not. so how to deal with it. do i need to manually map the image to a square texture? thank you.
this is the how the app looks if the texture for those buttons is 256*256:
and this is how it looks when i expand the texture to 300*256(in photoshop)
and this is my code for generating texture from image(using wxwidgets’ image class):
GLuint loadTexture(char *fileName)
{
GLuint txtnumber;
wxImage texture(_T(fileName),wxBITMAP_TYPE_PNG,-1);
int theHeight=texture.GetHeight(); //read into height and width
int theWidth=texture.GetWidth();
unsigned char *RGBData=texture.GetData();
unsigned char *alphaData=texture.GetAlpha();
size_t pixelCount=theHeight*theWidth;
size_t dataSize=pixelCount*4;
unsigned char *data=new unsigned char[dataSize];
for(size_t i=0;i<pixelCount;++i)
{
data[i*4]=RGBData[i*3];
data[i*4+1]=RGBData[i*3+1];
data[i*4+2]=RGBData[i*3+2];
data[i*4+3]=alphaData[i];
}
glGenTextures(1, &txtnumber);
glBindTexture(GL_TEXTURE_2D, txtnumber);
glTexImage2D(GL_TEXTURE_2D, 0, 4, theHeight, theWidth, 0,GL_RGBA,GL_UNSIGNED_BYTE, data);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
delete data;
return txtnumber;
};
by the way,my opengl is 2.0.