Textures from SDL upside down

View: New views
3 Messages — Rating Filter:   Alert me  

Textures from SDL upside down

by Bas van Dijk :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

I am using HOpenGL in combination with hsSDL
(http://darcs.haskell.org/~lemmih/hsSDL). This works great except for
texture loading. All my textures are mirrored over the v-axis. So the
top of a texture becomes the bottom. I first thought that I got the
texture coordinates wrong. But the textures are also flipped on the GLU
quadrics.

Is there some way to tell (H)OpenGL that a texture is mirrored? I tried
glPixelStore parameters but I don't think it is possible that way.
Perhaps it is possible to change a hsSDL surface before loading the
pixel data. Any advice is welcome.

regards,

Bas van Dijk
_______________________________________________
HOpenGL mailing list
HOpenGL@...
http://www.haskell.org/mailman/listinfo/hopengl

Re: Textures from SDL upside down

by Sven Panne :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Tuesday 06 March 2007 00:25, Bas van Dijk wrote:
> I am using HOpenGL in combination with hsSDL
> (http://darcs.haskell.org/~lemmih/hsSDL). This works great except for
> texture loading. All my textures are mirrored over the v-axis. So the
> top of a texture becomes the bottom. I first thought that I got the
> texture coordinates wrong. But the textures are also flipped on the GLU
> quadrics.

IIRC, in SDL the y-coordinate increases when going down the screen, while
OpenGL uses the usual mathematical convention of y increasing when going up.
Therefore your images are flipped, I guess.

> Is there some way to tell (H)OpenGL that a texture is mirrored? I tried
> glPixelStore parameters but I don't think it is possible that way.
> Perhaps it is possible to change a hsSDL surface before loading the
> pixel data. Any advice is welcome.

Usually the easiest and most efficient way is to simply flip your t texture
coordinate, i.e. use 1-t instead of t. Using pixelStore should be possible,
too (using negative offsets etc.), but often this is not really needed.

Cheers,
   S.
_______________________________________________
HOpenGL mailing list
HOpenGL@...
http://www.haskell.org/mailman/listinfo/hopengl

Re: Textures from SDL upside down

by Sebastian Sylvan :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On 3/13/07, Sven Panne <sven.panne@...> wrote:

> On Tuesday 06 March 2007 00:25, Bas van Dijk wrote:
> > I am using HOpenGL in combination with hsSDL
> > (http://darcs.haskell.org/~lemmih/hsSDL). This works great except for
> > texture loading. All my textures are mirrored over the v-axis. So the
> > top of a texture becomes the bottom. I first thought that I got the
> > texture coordinates wrong. But the textures are also flipped on the GLU
> > quadrics.
>
> IIRC, in SDL the y-coordinate increases when going down the screen, while
> OpenGL uses the usual mathematical convention of y increasing when going up.
> Therefore your images are flipped, I guess.
>
> > Is there some way to tell (H)OpenGL that a texture is mirrored? I tried
> > glPixelStore parameters but I don't think it is possible that way.
> > Perhaps it is possible to change a hsSDL surface before loading the
> > pixel data. Any advice is welcome.
>
> Usually the easiest and most efficient way is to simply flip your t texture
> coordinate, i.e. use 1-t instead of t.

Texture coordinates are not always guarnteed to be in the [0,1] range
though. So a coordinate of 1.2 would become -0.2 which will not always
sample the correct texel (depending on texture wrapping mode).


--
Sebastian Sylvan
+46(0)736-818655
UIN: 44640862
_______________________________________________
HOpenGL mailing list
HOpenGL@...
http://www.haskell.org/mailman/listinfo/hopengl
LightInTheBox - Buy quality products at wholesale price