Re: [PyOpenGL-Users] glVertexAttribPointer(); loading platform-specific functions
Brought to you by:
mcfletch
From: Joshua D. <joshuardavis@q.com> - 2009-08-13 20:43:29
|
On 2009 Aug 13 , at 11:10 AM, Mike C. Fletcher wrote: > I'd also *strongly* suggest going for PyOpenGL 3.0.0 final or even a > PyOpenGL 3.0.1 alpha, as there were quite a number of bug-fixes and > enhancements. The latest 3.0.1 alpha has an OpenGL.GL.shaders module > which provides "alternate" wrapped versions of the shader functions > which allow for using either core or ARB-provided versions of the > functions depending on what's available on the final machine. That > isn't necessary, but it should make it easier to work with shaders in > PyOpenGL. Thanks. I've had some trouble updating PyOpenGL -- probably my incompetence -- but now I'm up to 3.0.1a2 and using the OpenGL.GL.shaders convenience functions. When I try to construct a simple shader program... vertexCode = """ attribute vec3 position; attribute vec3 color; void main() { gl_Position = gl_ModelViewProjectionMatrix * vec4(position, 1.0); gl_FrontColor = vec4(color, 1.0); }""" fragmentCode = """ void main() { gl_FragColor = gl_Color; }""" vertexShader = compileShader(vertexCode, GL_VERTEX_SHADER) fragmentShader = compileShader(fragmentCode, GL_FRAGMENT_SHADER) shaderProgram = compileProgram(vertexShader, fragmentShader) ...I get this error: Traceback (most recent call last): File "vbo.py", line 88, in <module> shaderProgram = compileProgram(vertexShader, fragmentShader) File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ python2.5/site-packages/OpenGL/GL/shaders.py", line 105, in compileProgram validation = glGetProgramiv( program, GL_VALIDATE_STATUS ) File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ python2.5/site-packages/OpenGL/extensions.py", line 95, in __call__ return self( *args, **named ) File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ python2.5/site-packages/OpenGL/wrapper.py", line 1294, in __call__ return self.finalise()( *args, **named ) File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ python2.5/site-packages/OpenGL/wrapper.py", line 572, in wrapperCall raise err OpenGL.error.GLError: GLError( err = 1280, description = 'invalid enumerant', baseOperation = glGetProgramivARB, pyArgs = (3L, GL_VALIDATE_STATUS), cArgs = (3L, GL_VALIDATE_STATUS, array([0])), cArguments = (3L, GL_VALIDATE_STATUS, array([0])) ) This never happened with my home-spun shader-building functions. Your continuing help is appreciated. Josh |