On Mon, Feb 25, 2008 at 12:34 PM, Peter Wang <[EMAIL PROTECTED]> wrote:
>
>  Hey guys, I just saw this thread.
>
>  Last week I was able to get some basic integration between wxPython
>  and pyglet - some sample code is attached below.  Although this
>  program runs just fine, my actual usage is more complex and I've
>  encountered some issues.  Namely:
>
>  1. sometimes calling set_current() on both the pyglet Context and on
>  the wx.GLCanvas results in a GL "invalid operation" exception
>  (primarily on win32, not on OS X); however, I seem to need to call
>  both in order to get correct rendering.  (For example, pyglet's text
>  rendering won't work until set_current has been called.)
>
>  2. sometimes the window is blank until I resize, regardless of how
>  many times I swap buffers (via pyglet or wx), or how many times I draw
>  into the window or interact with the GL area with my mouse.
>
>  If anyone has any suggestions or ideas on how best to fix/debug these
>  issues, I'd love to hear from them.
>
>
>  Thanks,
>  Peter
>
>  -----------------------------
>
>  from wx.glcanvas import GLCanvas
>  from wx import *
>  from OpenGL.GLUT import *
>  from OpenGL.GLU import *
>  from OpenGL.GL import *
>
>  from pyglet import window, gl
>  from pyglet.font import load, Text
>
>  class myGLCanvas(GLCanvas):
>     def __init__(self, parent):
>         GLCanvas.__init__(self, parent,-1)
>         EVT_PAINT(self, self.OnPaint)
>         self.init = 0
>         return
>
>     def OnPaint(self,event):
>         if not self.init:
>             self.InitGL()
>             self.init = 1
>         self.ctx.set_current()
>         self.SetCurrent()
>         self.OnDraw()
>         return
>
>     def InitGL(self):
>         self.init_pyglet()
>         size = self.GetSize()
>         glViewport(0, 0, size.width, size.height)
>         glMatrixMode(GL_PROJECTION)
>         glLoadIdentity()
>         glOrtho(0, size.width, 0, size.height, 1, -1);
>         glMatrixMode(GL_MODELVIEW)
>         glLoadIdentity()
>
>     def OnDraw(self):
>         # Clear the background
>         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
>         size = self.GetSize()
>         glColor(0.827, 0.827, 0.827, 1.0)
>         glRectf(0, 0, size.width, size.height)
>
>         # draw a box
>         glColor(1, 0, 0, 1)
>         glLineWidth(2)
>         glBegin(GL_POLYGON)
>         glVertex2f(50, 50)
>         glVertex2f(50, 100)
>         glVertex2f(100, 100)
>         glVertex2f(100, 50)
>         glEnd()
>
>         # Draw the pyglet text
>         self.text.draw()
>
>         self.SwapBuffers()
>
>     def init_pyglet(self):
>         self.ctx = gl.Context()
>         self.ctx.set_current()
>         ft = load("Comic Sans MS", 24)
>         self.text = Text(ft, "Pyglet FTW!", x=150, y=50, color=(0,0,0,1))
>
>
>  def main():
>     app = wx.PySimpleApp()
>     frame = wx.Frame(None,-1,'wxPyglet',wx.DefaultPosition,wx.Size(400,400))
>     canvas = myGLCanvas(frame)
>     frame.Show()
>     app.MainLoop()
>
>  if __name__ == '__main__': main()
>
>

Hey Peter,

Interesting.  Pyglet and GUI integration would definitely be cool.
Maybe I missed something in your code, but why are you importing from
OpenGL instead of pyglet.gl?  pyglet provides a ctypes binding around
OpenGL, so ideally your application should depend on pyglet or
pyOpenGL - but not both.

Cheers,
-Drew

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to