Hi,
I am setting the coordinates having +ve y axis upward direction:
glOrtho(0, SCREEN_WIDTH, 0, SCREEN_HEIGHT, 1, -1);
But the following code is rendering the texture upside down (inverted):
glBegin( GL_QUADS );
glTexCoord2f( 0.f, 0.f ); glVertex2f(0.f, 0.f );
glTexCoord2f( 1.f, 0.f ); glVertex2f( _width, 0.f );
glTexCoord2f( 1.f, 1.f ); glVertex2f( _width, _height );
glTexCoord2f( 0.f, 1.f ); glVertex2f(0.f, _height );
glEnd();
I thought the texture coordines were [SxT]–> (0,1) with 1.0 going down the screen (-ve y direction). Does glOrtho has any effect on it?
How are you loading the textures? Some texture loaders load images upside-down.
I am using DevIL to load images. When I set +ve y downwards the image renders perfectly:
glOrtho(0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 1, -1);
Setting the +ve y direction upwards inverts the image texture:
glOrtho(0, SCREEN_WIDTH, 0, SCREEN_HEIGHT, 1, -1);
I tried various glTexCoords combinations in order to display texture with correct orientation when +y is upwards, but no luck! Does glOrtho change texture coordinates direction too?
try this:
ilEnable(IL_ORIGIN_SET);
ilOriginFunc(IL_ORIGIN_LOWER_LEFT);
[QUOTE=cireneikual;1248873]try this:
ilEnable(IL_ORIGIN_SET);
ilOriginFunc(IL_ORIGIN_LOWER_LEFT);
[/QUOTE]
Yes, it is rendering correctly in the Y direction now, but still flipping the X axis. Is it possible to somehow change the glTexCoords in the following code in order to rotate/flip the texture:
glBegin( GL_QUADS );
glTexCoord2f( 0.f, 0.f ); glVertex2f(0.f, 0.f );
glTexCoord2f( 1.f, 0.f ); glVertex2f( _width, 0.f );
glTexCoord2f( 1.f, 1.f ); glVertex2f( _width, _height );
glTexCoord2f( 0.f, 1.f ); glVertex2f(0.f, _height );
glEnd();
try IL_ORIGIN_LOWER_RIGHT. You can also just change the texture coordinates to make it work by switching the 0’s and 1’s for the x (aka s) component of the texture coordinate.