Archived

This topic is now archived and is closed to further replies.

Texture Mapping

This topic is 5276 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I''m trying to manually texture map a quad. I set it''s upper left, upper right, lower left, and lower right corners to have coordinates of a texture. It works, but something wierd happens. My texture seems to be split in half and the sides switch. This might not makes sense, so I made picture showing what is happening. www.psidimension.com/problem.gif The left picture is the bitmap I give it, and the right is what openGL displays. Any ideas?

Share this post


Link to post
Share on other sites
glBegin(GL_POLYGON);
glTexCoord2f(1,1); glVertex3f(m_ptUL.m_fX, m_ptUL.m_fY, m_ptUL.m_fZ);
glTexCoord2f(1,0.0); glVertex3f(m_ptLR.m_fX, m_ptUL.m_fY, m_ptUL.m_fZ);
glTexCoord2f(0.0,1); glVertex3f(m_ptLR.m_fX, m_ptLR.m_fY, m_ptUL.m_fZ);
glTexCoord2f(0.0,0.0); glVertex3f(m_ptUL.m_fX, m_ptLR.m_fY, m_ptUL.m_fZ);
glEnd();

Share this post


Link to post
Share on other sites
This really doesn't help me, since i can't know wich of your vertices is the bottom left one, the top left one etc ...

so :

your bottom left vertex should have those tex coord : (0,0)
bottom right : (1,0)
top right : (1,1)
top left (0,1)

Is this what you do ?

[edited by - Sphax on July 6, 2003 5:37:38 AM]

Share this post


Link to post
Share on other sites
It doesn''t matter. Post your texture loading code and your texture size, it must be a power of 2 if you aren''t using gluBuild2DMipMaps().

"C lets you shoot yourself in the foot rather easily. C++ allows you to reuse the bullet!"

Share this post


Link to post
Share on other sites
Sorry, heres the code I use to initiate the texture:



FILE *fp;
int nMemory;
PSI_BITMAP_IMAGE pbiTexture;

fp = fopen(szPath, "rb");
fread(&pbiTexture.bmfHeader, 1, 14, fp);
fread(&pbiTexture.bmiHeader, 1, 40, fp);

if (pbiTexture.bmiHeader.biSizeImage == 0)
{
nMemory = pbiTexture.bmiHeader.biWidth * pbiTexture.bmiHeader.biHeight * 4;
}
else
{
nMemory = pbiTexture.bmiHeader.biSizeImage;
}

pbiTexture.image_data= new GLubyte[nMemory];

fread(pbiTexture.image_data , 1, nMemory, fp);
fclose(fp);

glPixelStorei(GL_UNPACK_ALIGNMENT,1);
glGenTextures(1, &m_nTexture);
glBindTexture(GL_TEXTURE_2D, m_nTexture);
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, pbiTexture.bmiHeader.biWidth, pbiTexture.bmiHeader.biHeight, GL_BGR_EXT, GL_UNSIGNED_BYTE, pbiTexture.image_data);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);


delete[] pbiTexture.image_data;

Share this post


Link to post
Share on other sites
I could be wrong, but as i can remember gluBuild2DMipmaps automatically resize your texture to powers of 2, no ? I still think your texture coordinates are wrong.

And what those glTextGeni are doing here ? Isn''t it a function to automatically generate texture coords ?

Share this post


Link to post
Share on other sites