Re: [PyOpenGL-Devel] OpenGL 3.2 core profile
Brought to you by:
mcfletch
From: Mike C. F. <mcf...@vr...> - 2012-01-09 14:35:15
|
On 12-01-08 03:59 PM, Gregor Thalhammer wrote: > Hi, > > first thanks to Mike Fletcher for creating this wonderful package! > I want to make use of the new OpenGL 3.2 core profile implementation > on OS X 10.7 Lion. Now I experience some problems with PyOpenGL > 3.0.2a, e.g. when I want to use glGenVertexArrays. > > I could track some of the problems to the function 'hasGLExtension' in > OpenGL/extensions.py, here the problematic lines: > > try: > AVAILABLE_GL_EXTENSIONS[:] = glGetString( > GL_EXTENSIONS ).split() > except error.GLError, err: > # OpenGL 3.0 deprecates glGetString( GL_EXTENSIONS ) > from OpenGL.GL import GL_NUM_EXTENSIONS, glGetStringi, > glGetIntegerv > count = glGetIntegerv( GL_NUM_EXTENSIONS ) > for i in range( count ): > AVAILABLE_GL_EXTENSIONS.append( > glGetStringi( GL_EXTENSIONS, i ) > ) > result = specifier in AVAILABLE_GL_EXTENSIONS > > 1) glGetString(GL_EXTENSIONS) returns NULL, split() then throws an > AttributeError. > I observed (with GL Profiler) that there is no error check (call of > GetError after GetString), therefore the next GL function call fails > with a false error. This is fixed in bzr head. > > 2) later, GetStringi( GL_EXTENSIONS, i) produces an > OpenGL.arrays.arraydatatype.GLubyteArray instead of a bytes string, > which gives always a False result in the last line. > To fix this I duplicated in OpenGL/glget.py the code for glGetString > accordingly for glGetStringi, and changed the import statement above > to use this definition. Hrm, that one I haven't seen, nor do I see it when I create a 3.2 forward compatible context on Linux (Ubuntu 11.10). Are you using OpenGL_accelerate? (It has a slightly different implementation for Array data-types). > > 3) For glGenVertexArrays PyOpenGL expects that the > extension GL_ARB_vertex_array_object is available. However, this > extension is not present since glGenVertexArrays is part of OpenGL 3.0 > (and 3.2 core profile). Here I am stuck, I don't know how to fix this > (and for other related GL functions) This is fixed in bzr head of PyOpenGL, with an explicit mapping of version: implied-available-modules. The later OpenGL specs do an "include" of extensions rather than writing new versions of the entry points, but the latest release of PyOpenGL assumed that the implementation would still declare the extension available. > > Please, I need help to proceed with these problems. > > Gregor I've just done a very fast release of 3.0.2a2 (i.e. bzr head is now a "release"). I would expect there will be some teething problems with it, as I haven't had a chance to do a proper release (e.g. there's no OpenGL_accelerate compiled for it), but it may help you (and other OS-Xers) move forward. HTH, Mike -- ________________________________________________ Mike C. Fletcher Designer, VR Plumber, Coder http://www.vrplumber.com http://blog.vrplumber.com |