Re: access violation when calling glGenFramebuffers

David Vierra <[email protected]> Sun, 14 Apr 2013 10:37:28 -1000
Newsgroups gmane.comp.python.opengl.user
Message-ID <[email protected]>
On 4/14/2013 10:15 AM, Patrick Dietrich wrote:
> Am 13.04.2013 03:50, schrieb David Vierra:
>> In OpenGL/platform/baseplatform.py, constructFunction calls
>> self.getExtensionProcedure and gets a small negative number as a result.
>> I looked at getExtensionProcedure and traced it back to the
>> wglGetProcAddress that is implicitly created in
>> OpenGL/platform/win32.py. This wglGetProcAddress is a _FuncPtr whose
>> restype attribute is ctypes.c_long.
>>
>> If I add another line to OpenGL/platform/win32.py after the
>> `getExtensionProcedure = ` line, that says:
>>
>> OpenGL.wglGetProcAddress.restype = ctypes.c_void_p
>>
> I did the same thing and it fixed the problem with glGenFramebuffers,
> too! Thanks a lot David!
> Is this a fix which can be added to the official distribution or will it
> cause problems on other systems?

It did not cause problems with my 32-bit Python, at least. I strongly 
doubt it would cause any problems on other (non-Windows) systems since 
the change is only made in win32.py. The fix changes the result type of 
one function pointer, but this hints strongly that the underlying 
problem is that the default result type for ctypes funcptrs, on 64-bit 
Python for Windows, is only 32 bits long.

------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
PyOpenGL Homepage
http://pyopengl.sourceforge.net