On 10 Des, 13:33, Achim Domma <[EMAIL PROTECTED]> wrote: > I'm looking for quite some time now for a gui library for python, > which allows me to display 3D graphics. Main OS is windows, Mac OS X > and Linux would be nice to have. I want to use python 2.5. My first > try was wx + pyOpenGL but there are no working binaries for python > 2.5.
Huh? The latest version of PyOpenGL uses ctypes and has no binaries as it is implemented in pure Python. Personally I use my own ctypes wrapper for the few OpenGL routines I need. There is a lot of unwanted overhead in PyOpenGL. Also consider calling OpenGL from a Pyrex extension. That may save you some overhead if you make a lot of calls to the OpenGL library. A remedy for that may be to use display lists, or combine vertex arrays or vertex buffers with NumPy arrays. Excerpts from my OpenGL wrapper: from ctypes import * import numpy from threading import Lock opengl_lock = Lock() GL = windll.opengl32 GLU = windll.glu32 GL_PROJECTION = 0x1701 GL_MODELVIEW = 0x1700 GL_DEPTH_TEST = 0x0B71 GL_VERTEX_ARRAY = 0x8074 GL_NORMAL_ARRAY = 0x8075 glBegin = GL.glBegin glBegin.argtypes = (c_int,) glBegin.restype = None glEnd = GL.glEnd glEnd.argtypes = () glEnd.restype = None glVertex3f = GL.glVertex3f glVertex3f.argtypes = (c_float, c_float, c_float) glVertex3f.restype = None gltypemap = { GL_BYTE : numpy.ctypeslib.ndpointer(dtype = numpy.int8, flags='aligned,contiguous'), GL_UNSIGNED_BYTE : numpy.ctypeslib.ndpointer(dtype = numpy.uint8, flags='aligned,contiguous'), GL_SHORT : numpy.ctypeslib.ndpointer(dtype = numpy.int16, flags='aligned,contiguous'), GL_UNSIGNED_SHORT : numpy.ctypeslib.ndpointer(dtype = numpy.uint16, flags='aligned,contiguous'), GL_INT : numpy.ctypeslib.ndpointer(dtype = numpy.int32, flags='aligned,contiguous'), GL_UNSIGNED_INT : numpy.ctypeslib.ndpointer(dtype = numpy.uint32, flags='aligned,contiguous'), GL_FLOAT : numpy.ctypeslib.ndpointer(dtype = numpy.float32, flags='aligned,contiguous'), GL_DOUBLE : numpy.ctypeslib.ndpointer(dtype = numpy.float64, flags='aligned,contiguous'), GL_UNSIGNED_BYTE_3_3_2 : numpy.ctypeslib.ndpointer(dtype = numpy.uint8, flags='aligned,contiguous') } def glVertexPointer(size, gltype, stride, array): opengl_lock.acquire() glfun = GL.glVertexPointer glfun.argtypes = (c_int, c_int, c_int, gltypemap[gltype]) glfun.restype = None glfun(size, gltype, stride, array) opengl_lock.release() def glGenBuffersARB(n): opengl_lock.acquire() PFNGLGENBUFFERSARBPROC = WINFUNCTYPE(None, c_uint, gltypemap[GL_UNSIGNED_INT]) wglGetProcAddress = GL.wglGetProcAddress wglGetProcAddress.argtypes = (c_char_p,) wglGetProcAddress.restype = PFNGLGENBUFFERSARBPROC glfun = wglGetProcAddress('glGenBuffersARB') buffers = numpy.zeros(n, dtype=numpy.uint32) glfun(n, buffers) opengl_lock.release() return buffers Interfacing Python with OpenGL is not rocket science. -- http://mail.python.org/mailman/listinfo/python-list