Good Evening,
I am trying to draw a texture using pyopengl into a pyglet window, but
I have not managed to do so for the moment. The reason for using the
pyglet window is that it allows me not to have to enter into an
infinite loop and it does not block my program. And I am using
pyopengl because it is able to deal with floating point numpy array.
Below is the code I tried and but could not make it to work. Any
advices or suggestions will be greatly appreciated.
Regards
Brice
import OpenGL.GL as gl
import OpenGL.GLUT as glut
import pyglet
import numpy
import ctypes
from PIL import Image
def drawTexture( x , y , w , h ):
gl.glBegin( gl.GL_QUADS )
gl.glTexCoord2f( 0, 0 ), gl.glVertex2f( x, y )
gl.glTexCoord2f( 0, 1 ), gl.glVertex2f( x, y + h )
gl.glTexCoord2f( 1, 1 ), gl.glVertex2f( x + w, y + h )
gl.glTexCoord2f( 1, 0 ), gl.glVertex2f( x + w, y )
gl.glEnd()
class DisplayImage:
def __init__(self , width , height):
self._OpenWindow()
def _OpenWindow(self):
# Find out on which platform it is used. Might not be needed!
platform = pyglet.window.get_platform()
# List all the screens attached to the computer.
display = platform.get_default_display()
screens = display.get_screens()
template = pyglet.gl.Config(alpha_size=8,double_buffer = True,
depth_size=8)
config = screens[1].get_best_config(template)
self.window = pyglet.window.Window(fullscreen=True, screen =
screens[1],config=config)
def DrawTexture_image(self, image):
# Load texture
self.texture_id = gl.glGenTextures( 1 )
gl.glBindTexture( gl.GL_TEXTURE_2D, self.texture_id )
gl.glTexParameterf( gl.GL_TEXTURE_2D,
gl.GL_TEXTURE_MIN_FILTER, gl.GL_LINEAR )
gl.glTexParameterf( gl.GL_TEXTURE_2D,
gl.GL_TEXTURE_MAG_FILTER, gl.GL_LINEAR )
gl.glTexParameterf( gl.GL_TEXTURE_2D, gl.GL_TEXTURE_WRAP_S,
gl.GL_CLAMP_TO_EDGE )
gl.glTexParameterf( gl.GL_TEXTURE_2D, gl.GL_TEXTURE_WRAP_T,
gl.GL_CLAMP_TO_EDGE )
gl.glTexImage2D( gl.GL_TEXTURE_2D, 0, gl.GL_LUMINANCE,
image.shape[1], image.shape[0], 0,
gl.GL_LUMINANCE, gl.GL_FLOAT, image )
gl.glTexEnvf( gl.GL_TEXTURE_ENV, gl.GL_TEXTURE_ENV_MODE,
gl.GL_MODULATE )
gl.glClearColor( 1, 1, 1, 1 )
gl.glClear( gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT )
x, y, w, h = gl.glGetIntegerv( gl.GL_VIEWPORT )
gl.glEnable( gl.GL_BLEND )
gl.glBlendFunc ( gl.GL_SRC_ALPHA,
gl.GL_ONE_MINUS_SRC_ALPHA )
gl.glColor(0,0,0,1)
gl.glEnable( gl.GL_TEXTURE_2D )
gl.glActiveTexture( gl.GL_TEXTURE0 )
gl.glBindTexture( gl.GL_TEXTURE_2D, self.texture_id )
drawTexture(x,y,w,h)
self.window.dispatch_event()
self.window.flip()
if __name__ == '__main__':
DisIm = DisplayImage(1000,1000)
raw_input("Is it initialising?")
def func4( x, y ):
return numpy.ceil( x ) + numpy.ceil( y )
x = numpy.linspace( -3.0, 3.0, 800 )
y = numpy.linspace( -3.0, 3.0, 800 )
Z = func4( *numpy.meshgrid( x, y ) )
Z = ( Z - Z.min() ) / ( Z.max() - Z.min() )
DisIm.DrawTexture_image(Z)
raw_input("Does it display image?")
DisIm.window.close()
--
You received this message because you are subscribed to the Google Groups
"pyglet-users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/pyglet-users?hl=en.