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
|