Re: [PyOpenGL-Users] glGenVertexArrays producing 'invalid enumerant' error.
Brought to you by:
mcfletch
From: Mike C. F. <vrp...@gm...> - 2011-11-08 05:27:01
|
On 11-11-05 03:28 PM, Gordon Wrigley wrote: > 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. Sounds like there's an error being hidden in there somewhere, would have to try to reproduce it to see what it was. I suspect it's actually the glGenVertexArrays call, or more likely, the call before it that is producing the error. The two uses of direct ctypes are simply ignoring the error being set, most likely. > > On Fri, Nov 4, 2011 at 11:30 PM, Gordon Wrigley <go...@to... > <mailto: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 > You *should* be able to specify core profile, I'd like to get that working some day. glVertexAttrib pointer errors seems strange. I'm pretty sure I use that in some of my sample code, but maybe something has regressed? Hopefully will get some time next week to work on it, Mike > > > > On Tue, Oct 25, 2011 at 1:56 AM, Mike C. Fletcher > <mcf...@vr... <mailto: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... <mailto:go...@to...>> wrote: >> >> On Tue, Oct 18, 2011 at 4:56 AM, Mike C. Fletcher >> <mcf...@vr... <mailto: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 > > > -- ________________________________________________ Mike C. Fletcher Designer, VR Plumber, Coder http://www.vrplumber.com http://blog.vrplumber.com |