Re: glUseProgramObjectARB Invalid Operation

"Mike C. Fletcher" <[email protected]> Fri, 16 May 2014 09:10:41 -0400
Newsgroups gmane.comp.python.opengl.user
Message-ID <[email protected]>
On 05/16/2014 12:05 AM, Ian Mallett wrote:
> Hi,
>
> A user has reported an invalid operation OpenGL error from calling 
> glUseProgramObjectARB. The important part of the trace:
>   File "/home/sigurd/Documents/Test/5.00/shader.py", line 119, in use
>     glUseProgramObjectARB(shader.shader)
>   File 
> "/usr/lib/python2.7/dist-packages/OpenGL/platform/baseplatform.py", 
> line 379, in __call__
>     return self( *args, **named )
>   File "/usr/lib/python2.7/dist-packages/OpenGL/error.py", line 208, 
> in glCheckError
>     baseOperation = baseOperation,
> GLError: GLError(
>     err = 1282,
>     description = 'invalid operation',
>     baseOperation = glUseProgramObjectARB,
>     cArguments = (2L,)
> )
>
> The exact source can be obtained by downloading the program from my 
> website (here 
> <http://geometrian.com/data/programming/projects/Mandelbrot%20Set/Viewer%205.00/Mandelbrot%20Set%20Viewer%205.00.zip>). 
> The program creates the shader after an OpenGL context has been 
> created, and in any case works on all the computers /I/ have tested it on.
>
> The user reports Python 2.7, PyGame 1.9.1, and PyOpenGL 3.1.0b2 
> running on Ubuntu 14.04 (x86-64). The GPU is an Intel Haswell Mobile.
>
> I upgraded my PyOpenGL to the same version, but was unable to 
> reproduce the problem myself (NVIDIA GeForce GTX 580M).

I can reproduce it here on a Kubuntu 14.04 laptop.  The shaderInfoLog on 
Intel driver may not be generated (compilation may not actually occur) 
until use-time (some drivers do not actually compile until use of the 
shader occurs).  You're seeing a failure to compile and that's causing 
this message to be generated:

     ['0:2(42): error: syntax error, unexpected IDENTIFIER, expecting 
EOL\n', 'error: linking with uncompiled shader']

where the linking with uncompiled shader is the proximate failure, while 
the previous one is the provoking failure. I just added a try/except 
around the call and called glGetShaderInfoLog for all of the program and 
shader ids.

Hope that helps,
Mike

-- 
________________________________________________
   Mike C. Fletcher
   Designer, VR Plumber, Coder
   http://www.vrplumber.com
   http://blog.vrplumber.com

------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs

_______________________________________________
PyOpenGL Homepage
http://pyopengl.sourceforge.net
_______________________________________________
PyOpenGL-Users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pyopengl-users