Re: [PyOpenGL-Users] Drawing a texture into a pyglet window
Brought to you by:
mcfletch
|
From: Ian M. <geo...@gm...> - 2012-01-14 15:07:54
|
On Sat, Jan 14, 2012 at 4:23 AM, Brice Thurin <bps...@gm...> wrote:
> Dear Ian,
>
> Thank you for your reply. What I do not understand is that most of this
> code work fine when I am using Pyopengl with GLUT but it fails when I use
> is with a pyglet window?
>
Dunno. You probably changed something small, or maybe there are small bugs
in the PyOpenGL/PyGlet layers that lead to inconsistencies.
I am intending to apply a gaussian filter with a shader once I got this bit
> working. It is why I am using glFloat. I thought the maximum value in that
> case would be 1.0.
>
Actually, I'm not sure why it wanted something in the range [0.0,255.0].
Perhaps one of those small bugs, eh? Anyway, that refers to the datatype
of what you *pass in*. The texture you got almost certainly only has
8-bits duplicated four times, so you got no extra precision.
You could use GL_LUMINANCE16 or something, but I recommend you look into
using the internal format flags GL_RGB[A]{16|32}F_ARB. These are
floating-point texture extensions (import from
OpenGL.GL.ARB.texture_float). Note that, if you want to render to them,
you need to either specially set up your rendering context (not sure how in
PyGlet) or, the better choice, use a framebuffer object.
-Don't use GL_LUMINANCE. Use GL_RGB, and GL_RGBA. If you're all for speed
>> and are feeling up to it, always use GL_BGRA, because that's often how the
>> GPU represents it internally.
>>
> - Could you tell me why I should not use GL_LUMINANCE
>
Well, it's not so much that you *shouldn't* use it, as there's no real
need. As I said, internally textures are often represented as GL_RGBA (and
ALL textures WILL be represented as 4 channels, with almost always 8 bits
each). As per the
documentation<http://www.opengl.org/sdk/docs/man/xhtml/glTexImage2D.xml>,
GL_LUMINANCE duplicates the values. So it would be more clear (and a touch
faster at runtime) to just use GL_RGB in the first place. And, if you use
GL_RGB, you don't have to worry about writing any extra code when you start
wanting to put actual color in your textures.
Ian
|