Re: [PyOpenGL-Users] glGenVertexArrays producing 'invalid enumerant' error.
Brought to you by:
mcfletch
From: Gordon W. <go...@to...> - 2011-11-05 19:28:47
|
The plot thickens, if I bypass pyopengl and do the glGenVertexArrays call direct through ctypes the "invalid enumerant" error moves to the subsequent glBindVertexArray call, if I use cytpes for that as well then everything starts working. G On Fri, Nov 4, 2011 at 11:30 PM, Gordon Wrigley <go...@to...> wrote: > I just got a chance to get back to this and I've made a little head way, > far enough that I have something on screen. > Specifying GLUT_COMPATIBILITY_PROFILE instead of GLUT_CORE_PROFILE got > round the glGenVertexArrays error. > I also had to do ctypes stuff to work around the lack of wrapper for that > function. > And the function glVertexAttribPointer was getting cast errors on the last > argument so I had to ctypes around that as well. > I believe that's the only dirty stuff I have so far. > > G > > > On Tue, Oct 25, 2011 at 1:56 AM, Mike C. Fletcher <mcf...@vr...>wrote: > >> ** >> On 11-10-20 06:41 AM, Gordon Wrigley wrote: >> >> And I attached the wrong log, here's the correct one. >> >> >> Hrm, not much to go on there. The call to createShader() does not appear >> in the stack, which is a bit weird. Is this code I could trace through to >> try to find the error (i.e. not something proprietary?) >> >> Good luck, >> Mike >> >> >> >> On Thu, Oct 20, 2011 at 9:39 PM, Gordon Wrigley <go...@to...>wrote: >> >>> On Tue, Oct 18, 2011 at 4:56 AM, Mike C. Fletcher < >>> mcf...@vr...> wrote: >>> >>>> On 11-10-12 03:34 AM, tolomea wrote: >>>> > Version stuff: >>>> > Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24) >>>> > [GCC 4.5.2] on linux2 >>>> > Type "help", "copyright", "credits" or "license" for more information. >>>> > import OpenGL >>>> > OpenGL.__version__ >>>> > '3.0.2a1' >>>> > I'm using FORWARD_COMPATIBLE_ONLY, context version 3.3 and >>>> GLUT_CORE_PROFILE. >>>> > >>>> > >>>> > I'm porting a working (same machine and environment etc) C program to >>>> Python, >>>> > and the glGenVertexArrays function is giving me grief. >>>> > >>>> > The pythonic form: >>>> > vao = glGenVertexArrays(1) >>>> > produces "TypeError: this function takes at least 2 arguments" which >>>> I presume >>>> > means it hasn't been wrapped yet. >>>> Yes. >>>> > I've no idea what could be causing that and googling hasn't turned up >>>> anything >>>> > useful. >>>> > >>>> > Does anyone have any suggestions as to where to look? >>>> > Are there any known working examples of using vertex array objects >>>> and pyopengl >>>> > that I could cross check against? >>>> My go-to guess with almost any Python-differs-from-C problems during >>>> init is to look at the error-checking code. PyOpenGL's biggest >>>> difference from C code is that it runs error checking after every call. >>>> I'm guessing either your context isn't quite ready-to-go and you're >>>> getting an error from the error checking, or that the line before had an >>>> error and the error checking picked it up a line late. >>>> >>>> import OpenGL >>>> OpenGL.USE_ACCELERATE = False >>>> OpenGL.ERROR_CHECKING = False >>>> >>>> at the top of your script should let you quickly determine a) where the >>>> problem is b) whether the problem is with error checking. >>>> >>>> >>> If I turn error checking off it dies much earlier on a glCreateShader >>> call with: >>> >>> WARNING:OpenGL.errors:Failure on glCreateShader: Traceback (most >>> recent call last): >>> File "/usr/local/lib/python2.7/dist-packages/OpenGL/logs.py", line 74, >>> in __call__ >>> return function( *args, **named ) >>> ArgumentError: argument 3: <type 'exceptions.TypeError'>: Don't know how >>> to convert parameter 3 >>> >>> Traceback (most recent call last): >>> File "main.py", line 237, in <module> >>> main(sys.argv) >>> File "main.py", line 227, in main >>> init() >>> File "main.py", line 147, in init >>> init_program() >>> File "main.py", line 122, in init_program >>> vert = gl.VertexShader("data/shaders/basic.vert") >>> File "/mnt/drive1/home/gordon/code/spacecraft2/gl.py", line 50, in >>> __init__ >>> _Shader.__init__(self, fname, VERTEX_SHADER) >>> File "/mnt/drive1/home/gordon/code/spacecraft2/gl.py", line 37, in >>> __init__ >>> self.shader = createShader(shader_type) >>> File >>> "/usr/local/lib/python2.7/dist-packages/OpenGL/platform/baseplatform.py", >>> line 372, in __call__ >>> return self( *args, **named ) >>> File "/usr/local/lib/python2.7/dist-packages/OpenGL/logs.py", line >>> 74, in __call__ >>> return function( *args, **named ) >>> ctypes.ArgumentError: argument 3: <type 'exceptions.TypeError'>: Don't >>> know how to convert parameter 3 >>> >>> >>> That doesn't seem like progress. >>> >>> With error checking on calling glGetError right before the >>> glGenVertexArrays call returns 0. >>> >>> Toggling use accelerate hasn't made any noticeable difference. >>> >>> I don't know if it helps any but I turned on full logging and attached >>> a dump of the output. >>> >>> G >>> >>> >>> >> >> >> -- >> ________________________________________________ >> Mike C. Fletcher >> Designer, VR Plumber, Coder >> http://www.vrplumber.com >> http://blog.vrplumber.com >> >> > |