Thread: [PyOpenGL-Users] glVertexAttribPointer(); loading platform-specific functions
Brought to you by:
mcfletch
From: Joshua D. <joshuardavis@q.com> - 2009-08-13 14:06:14
|
I have some questions that probably boil down to my inexperience with Python. My setup is PyOpenGL-3.0.0c1 on Python 2.5.x on Mac OS X. I'm trying to modernize my OpenGL to use VBOs and vertex attributes, working through the tutorials at http://bazaar.launchpad.net/ ~mcfletch/openglcontext/trunk/annotate/head:/tests/shader_4.py. When I execute code like this: vertexBufferObject = vbo.VBO(...) gl.glVertexAttribPointer(positionLocation, 3, GL_FLOAT, False, 24, vertexBufferObject) The second line generates this error: ctypes.ArgumentError: argument 6: <type 'exceptions.TypeError'>: Don't know how to convert parameter 6 The following code is what I've been doing to get platform-specific (?) PyOpenGL functions. They often seem to require some massaging of argument types; is the same thing needed for glVertexAttribPointer() above? # This is adapted from http://www.pygame.org/wiki/GLSLExample. try: from OpenGL import platform gl = platform.OpenGL except ImportError: try: gl = cdll.LoadLibrary('libGL.so') except OSError: from ctypes.util import find_library path = find_library('OpenGL') gl = cdll.LoadLibrary(path) gl.glShaderSource.argtypes = [c_int, c_int, POINTER(c_char_p), POINTER (c_int)] gl.glGetShaderiv.argtypes = [c_int, c_int, POINTER(c_int)] gl.glGetShaderInfoLog.argtypes = [c_int, c_int, POINTER(c_int), c_char_p] Is there some newer, better way to load these functions? Is there some web tutorial that explains what's going on here, so that I can debug it myself next time? Thanks -- Josh |
From: Paulo S. <nit...@gm...> - 2009-08-13 14:38:24
|
Joshua Davis from http://www.joshuadavis.com/ :O ? awesome, be welcome! \o/ anyway, i don't know if it is your very first approach on OpenGL using PyOpenGL - i think i'm even struggling with it way much more than you - my very first approaches were trying to analyse some pyweek games like http://pyweek.org/e/GNAG/ , but it uses Pyglet instead (which also uses OpenGL as well) - in the case you can't fix what you try to do with PyOpenGL, maybe would be a good idea trying Pyglet also... cheers! On 8/13/09, Joshua Davis <joshuardavis@q.com> wrote: > I have some questions that probably boil down to my inexperience with > Python. My setup is PyOpenGL-3.0.0c1 on Python 2.5.x on Mac OS X. I'm > trying to modernize my OpenGL to use VBOs and vertex attributes, > working through the tutorials at http://bazaar.launchpad.net/ > ~mcfletch/openglcontext/trunk/annotate/head:/tests/shader_4.py. When > I execute code like this: > > vertexBufferObject = vbo.VBO(...) > gl.glVertexAttribPointer(positionLocation, 3, GL_FLOAT, False, 24, > vertexBufferObject) > > The second line generates this error: > > ctypes.ArgumentError: argument 6: <type 'exceptions.TypeError'>: > Don't know how to convert parameter 6 > > The following code is what I've been doing to get platform-specific > (?) PyOpenGL functions. They often seem to require some massaging of > argument types; is the same thing needed for glVertexAttribPointer() > above? > > # This is adapted from http://www.pygame.org/wiki/GLSLExample. > try: > from OpenGL import platform > gl = platform.OpenGL > except ImportError: > try: > gl = cdll.LoadLibrary('libGL.so') > except OSError: > from ctypes.util import find_library > path = find_library('OpenGL') > gl = cdll.LoadLibrary(path) > gl.glShaderSource.argtypes = [c_int, c_int, POINTER(c_char_p), POINTER > (c_int)] > gl.glGetShaderiv.argtypes = [c_int, c_int, POINTER(c_int)] > gl.glGetShaderInfoLog.argtypes = [c_int, c_int, POINTER(c_int), > c_char_p] > > Is there some newer, better way to load these functions? Is there > some web tutorial that explains what's going on here, so that I can > debug it myself next time? > > Thanks -- Josh > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus > on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > PyOpenGL Homepage > http://pyopengl.sourceforge.net > _______________________________________________ > PyOpenGL-Users mailing list > PyO...@li... > https://lists.sourceforge.net/lists/listinfo/pyopengl-users > |
From: Mike C. F. <mcf...@vr...> - 2009-08-13 16:10:45
|
Joshua Davis wrote: > I have some questions that probably boil down to my inexperience with > Python. My setup is PyOpenGL-3.0.0c1 on Python 2.5.x on Mac OS X. I'm > trying to modernize my OpenGL to use VBOs and vertex attributes, > working through the tutorials at http://bazaar.launchpad.net/ > ~mcfletch/openglcontext/trunk/annotate/head:/tests/shader_4.py. When > I execute code like this: > > vertexBufferObject = vbo.VBO(...) > gl.glVertexAttribPointer(positionLocation, 3, GL_FLOAT, False, 24, > vertexBufferObject) > The "gl." should not be necessary, PyOpenGL 3.x includes full access to the OpenGL 2.x functionality. The wiki sample you are looking at is *very* old, unfortunately, the wiki editor seems broken, so I can't update it without completely hashing the page :( . The vbo.VBO object uses PyOpenGL's wrapping functionality to appear as though it is a data-array pointer, but that behaviour is not available in raw ctypes wrappers (such as the wiki recipe is creating). from OpenGL.GL import * should get you a copy of glVertexAttribPointer without needing to do anything else (particularly, without using any ctypes code explicitly). If you need the ARB versions, they are available via: from OpenGL.GL.ARB.vertex_buffer_object import * 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. The tutorials you're following through were written against PyOpenGL 3.0.1 alpha (actually bzr head), so operations such as "compileShader()" are not going to be available in your older PyOpenGL release. If you're working on a Linux machine where 3.0.0c1 is the current PyOpenGL package, you may want to set up a "virtualenv" environment and install the more recent version there (virtualenv creates a separate Python package namespace where you can work in isolation from system packages). I'll update the tutorial introduction page to mention the version of PyOpenGL that it is written against. The wiki sample code, rewritten for PyOpenGL 3.0.1's shader convenience module (which is, via a number of levels of indirection, loosely based on that wiki recipe, I think) is included below... HTH, Mike #! /usr/bin/env python from pygame import * import pygame from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * from OpenGL.GL.shaders import * if __name__ == '__main__': glutInit(sys.argv) width, height = 640, 480 pygame.init() pygame.display.set_mode((width, height), OPENGL | DOUBLEBUF) program = compileProgram( compileShader( ''' // Vertex program varying vec3 pos; void main() { pos = gl_Vertex.xyz; gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; } ''', GL_VERTEX_SHADER, ), compileShader( ''' // Fragment program varying vec3 pos; void main() { gl_FragColor.rgb = pos.xyz; } ''', GL_FRAGMENT_SHADER ), ) glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(90.0, width/float(height), 1.0, 100.0) glMatrixMode(GL_MODELVIEW) glEnable(GL_DEPTH_TEST) quit = False angle = 0 while not quit: for e in pygame.event.get(): if e.type in (QUIT, KEYDOWN): quit = True glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glLoadIdentity() glTranslate(0.0, 0.0, -2.5) glRotate(angle, 0.0, 1.0, 0.0) glUseProgram(program) glutSolidTeapot(1.0) angle += 0.1 pygame.display.flip() -- ________________________________________________ Mike C. Fletcher Designer, VR Plumber, Coder http://www.vrplumber.com http://blog.vrplumber.com |
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 |
From: Mike C. F. <mcf...@vr...> - 2009-08-13 21:43:12
Attachments:
glGetProgramiv-fix.diff
|
Joshua Davis wrote: > On 2009 Aug 13 , at 11:10 AM, Mike C. Fletcher wrote: > ... > 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... > ... > 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. > This is a bug in the shaders module. Turns out that glGetProgramivARB and glGetProgramiv have different roles?! Basically it looks like it's glGetObjectParameteriv that's supposed to be used for the glGetProgramiv validity check call (at least, if I use that and disable core GL I get the correct operation). Going to have to look into the function definitions more to be sure that the alternate declaration works. Good luck, Mike -- ________________________________________________ Mike C. Fletcher Designer, VR Plumber, Coder http://www.vrplumber.com http://blog.vrplumber.com |
From: Mike C. F. <mcf...@vr...> - 2009-08-13 22:59:00
|
Mike C. Fletcher wrote: ... > This is a bug in the shaders module. Turns out that glGetProgramivARB > and glGetProgramiv have different roles?! Basically it looks like it's > glGetObjectParameteriv that's supposed to be used for the glGetProgramiv > validity check call (at least, if I use that and disable core GL I get > the correct operation). Going to have to look into the function > definitions more to be sure that the alternate declaration works. > I've just uploaded a source release with this fix in it. SourceForge seems to be having problems, but it should show up within 15 minutes or so. HTH, Mike -- ________________________________________________ Mike C. Fletcher Designer, VR Plumber, Coder http://www.vrplumber.com http://blog.vrplumber.com |
From: Joshua D. <joshuardavis@q.com> - 2009-08-14 19:55:16
|
>> This is a bug in the shaders module. Turns out that >> glGetProgramivARB > and glGetProgramiv have different roles?! Basically it looks like > it's > glGetObjectParameteriv that's supposed to be used for the > glGetProgramiv > validity check call (at least, if I use that and disable core GL I get > the correct operation). Going to have to look into the function > definitions more to be sure that the alternate declaration works. Your changes to shaders.py have gotten me past that problem. Thanks very much. I now have two versions of my program. The first uses the legacy glVertexPointer() stuff and works perfectly. The second is altered, as little as possible, so that it uses the modern glVertexAttribPointer() stuff instead. It raises no errors but generates no fragments. Here is the glVertexPointer() version of the two crucial functions... def initializeShaders(): global shaderProgram vertexCode = """ void main() { gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; gl_FrontColor = gl_Color; }""" fragmentCode = """ void main() { gl_FragColor = gl_Color; }""" vertexShader = compileShader(vertexCode, GL_VERTEX_SHADER) fragmentShader = compileShader(fragmentCode, GL_FRAGMENT_SHADER) shaderProgram = compileProgram(vertexShader, fragmentShader) def handleDisplayEvent(): global vertexBufferObject, shaderProgram glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glUseProgram(shaderProgram) vertexBufferObject.bind() glEnableClientState(GL_VERTEX_ARRAY) glEnableClientState(GL_COLOR_ARRAY) glVertexPointer(3, GL_FLOAT, 24, vertexBufferObject) glColorPointer(3, GL_FLOAT, 24, vertexBufferObject + 12) glDrawArrays(GL_TRIANGLES, 0, 9) vertexBufferObject.unbind() glDisableClientState(GL_VERTEX_ARRAY) glDisableClientState(GL_COLOR_ARRAY) glUseProgram(0) glFlush() glutSwapBuffers() ...and here are those same functions, rewritten to use glVertexAttribPointer(). def initializeShaders(): global shaderProgram, positionLocation, colorLocation 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; gl_FragColor = vec4(1.0, 0.0, 1.0, 1.0); }""" vertexShader = compileShader(vertexCode, GL_VERTEX_SHADER) fragmentShader = compileShader(fragmentCode, GL_FRAGMENT_SHADER) shaderProgram = compileProgram(vertexShader, fragmentShader) positionLocation = glGetAttribLocation(shaderProgram, 'position') colorLocation = glGetAttribLocation(shaderProgram, 'color') def handleDisplayEvent(): global vertexBufferObject, shaderProgram, positionLocation, colorLocation glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glUseProgram(shaderProgram) vertexBufferObject.bind() glEnableVertexAttribArray(positionLocation) glEnableVertexAttribArray(colorLocation) glVertexAttribPointer(positionLocation, 3, GL_FLOAT, False, 24, vertexBufferObject) glVertexAttribPointer(colorLocation, 3, GL_FLOAT, False, 24, vertexBufferObject + 12) glDrawArrays(GL_TRIANGLES, 0, 9) vertexBufferObject.unbind() glDisableVertexAttribArray(positionLocation) glDisableVertexAttribArray(colorLocation) glUseProgram(0) glFlush() glutSwapBuffers() Am I missing something obvious? Any suggestions on how to debug further? Josh |
From: Joshua D. <joshuardavis@q.com> - 2009-08-15 14:25:52
|
While hoping for a response to my previous question, I'm trying to run the tutorial at http://bazaar.launchpad.net/~mcfletch/openglcontext/trunk/annotate/ head:/tests/shader_4.py as it is written, verbatim. The thing requires OpenGLContext and its various dependencies, which are listed at http://pyopengl.sourceforge.net/documentation/installation.html I've installed PyDispatcher, SimpleParse 2.1.1a2, TTFQuery 1.0.1, FontTools (for Numpy) 2.1a1, and OpenGLContext 2.1.0a5. Supposedly SimpleParse 2.1 provides the VRML97 parser, and the directory OpenGLContext/loaders/ contains vrml.py, but I still get this error: tcsh > python shader_4.py INFO:OpenGL.acceleratesupport:OpenGL_accelerate module loaded Traceback (most recent call last): File "shader_4.py", line 31, in <module> from OpenGLContext import testingcontext File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ python2.5/site-packages/OpenGLContext/testingcontext.py", line 13, in <module> from OpenGLContext import context File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ python2.5/site-packages/OpenGLContext/context.py", line 32, in <module> from OpenGLContext import visitor, texturecache,plugins File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ python2.5/site-packages/OpenGLContext/visitor.py", line 3, in <module> from OpenGLContext.scenegraph import nodepath File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ python2.5/site-packages/OpenGLContext/scenegraph/nodepath.py", line 3, in <module> from vrml.vrml97 import nodepath, nodetypes ImportError: No module named vrml.vrml97 Josh |
From: Mike C. F. <mcf...@vr...> - 2009-08-16 23:46:26
|
Joshua Davis wrote: > While hoping for a response to my previous question, I'm trying to > run the tutorial at > > http://bazaar.launchpad.net/~mcfletch/openglcontext/trunk/annotate/ > head:/tests/shader_4.py > > as it is written, verbatim. The thing requires OpenGLContext and its > various dependencies, which are listed at > > http://pyopengl.sourceforge.net/documentation/installation.html > > I've installed PyDispatcher, SimpleParse 2.1.1a2, TTFQuery 1.0.1, > FontTools (for Numpy) 2.1a1, and OpenGLContext 2.1.0a5. Supposedly > SimpleParse 2.1 provides the VRML97 parser, and the directory > OpenGLContext/loaders/ contains vrml.py, but I still get this error: > Afraid I forgot to update the documentation when I split out the PyVRML97 project out. I've updated it to point to the PyVRML97 project. HTH, Mike -- ________________________________________________ Mike C. Fletcher Designer, VR Plumber, Coder http://www.vrplumber.com http://blog.vrplumber.com |
From: Mike C. F. <mcf...@vr...> - 2009-08-16 22:38:53
Attachments:
joshua-fix.py
|
Joshua Davis wrote: ... > I now have two versions of my program. The first uses the legacy > glVertexPointer() stuff and works perfectly. The second is altered, > as little as possible, so that it uses the modern > glVertexAttribPointer() stuff instead. It raises no errors but > generates no fragments. Here is the glVertexPointer() version of the > two crucial functions... > I don't see any obvious problems with the attribute-based version. I've done some minimal modifications to create a working full script. I had to add some perspective and translation setup (to move the geometry back from the viewer). Please consider trying to create this kind of runnable script when reporting errors, I'm rather short on time to work on PyOpenGL and recreating scripts takes time I should be putting into other tasks. HTH, Mike -- ________________________________________________ Mike C. Fletcher Designer, VR Plumber, Coder http://www.vrplumber.com http://blog.vrplumber.com |
From: Joshua D. <joshuardavis@q.com> - 2009-08-17 14:10:12
|
On 2009 Aug 16 , at 6:46 PM, Mike C. Fletcher wrote: > Afraid I forgot to update the documentation when I split out the > PyVRML97 project out. I've updated it to point to the PyVRML97 > project. Thanks a lot; I've got it installed now. The shader_4.py tutorial now runs without raising any errors, but it doesn't seem to generate any fragments; it's just a white screen. (This seems to be exactly what happened with my own vertex attribute array code.) I've pasted its console output below. I'm using PyOpenGL 3.0.1a3. Maybe this is relevant: My hardware is an ATI Radeon 9600, which is supposed to support OpenGL 2.0, but the output below suggests that it's providing only OpenGL 1.5. Is this a driver issue? I'm on Mac OS X 10.4.11, and Apple updates drivers automatically. OpenGL 1.5 should be enough for VBOs anyway. As an aside, elsewhere in my application I'm using framebuffer objects with no problem. Josh tcsh > python shader_4.py INFO:OpenGL.acceleratesupport:OpenGL_accelerate module loaded PREFERENCELIST ('pygame', 'wx', 'glut', 'tk') INFO:OpenGL.extensions:OpenGL Version: 1.5 ATI-1.4.18 INFO:OpenGL.extensions:GL Extension GL_ARB_shader_objects available INFO:OpenGL.extensions:Chose alternate: glCreateShaderObjectARB from glCreateShader, glCreateShaderObjectARB INFO:OpenGL.extensions:Chose alternate: glShaderSourceARB from glShaderSource, glShaderSourceARB INFO:OpenGL.extensions:Chose alternate: glCompileShaderARB from glCompileShader, glCompileShaderARB INFO:OpenGL.extensions:Chose alternate: glGetObjectParameterivARB from glGetShaderiv, glGetObjectParameterivARB INFO:OpenGL.extensions:Chose alternate: glCreateProgramObjectARB from glCreateProgram, glCreateProgramObjectARB INFO:OpenGL.extensions:Chose alternate: glAttachObjectARB from glAttachShader, glAttachObjectARB INFO:OpenGL.extensions:Chose alternate: glLinkProgramARB from glLinkProgram, glLinkProgramARB INFO:OpenGL.extensions:Chose alternate: glValidateProgramARB from glValidateProgram, glValidateProgramARB INFO:OpenGL.extensions:Chose alternate: glGetObjectParameterivARB from glGetProgramiv, glGetObjectParameterivARB INFO:OpenGL.extensions:Chose alternate: glDeleteObjectARB from glDeleteShader, glDeleteObjectARB INFO:OpenGL.extensions:GL Extension GL_ARB_vertex_shader available INFO:OpenGL.extensions:Chose alternate: glGetAttribLocationARB from glGetAttribLocation, glGetAttribLocationARB INFO:OpenGL.extensions:Chose alternate: glGetUniformLocationARB from glGetUniformLocation, glGetUniformLocationARB INFO:OpenGL.extensions:GL Extension GL_ARB_occlusion_query available INFO:OpenGL.extensions:GL Extension GL_ARB_point_parameters available INFO:OpenGL.extensions:GL Extension GL_EXT_point_parameters unavailable INFO:OpenGL.extensions:Chose alternate: glUseProgramObjectARB from glUseProgram, glUseProgramObjectARB INFO:OpenGL.extensions:Chose alternate: glUniform1fARB from glUniform1f, glUniform1fARB INFO:OpenGL.extensions:GL Extension GL_ARB_vertex_buffer_object available INFO:OpenGL.extensions:GL Extension GL_ARB_vertex_program available INFO:OpenGL.extensions:Chose alternate: glEnableVertexAttribArrayARB from glEnableVertexAttribArray, glEnableVertexAttribArrayARB INFO:OpenGL.extensions:Chose alternate: glVertexAttribPointerARB from glVertexAttribPointer, glVertexAttribPointerARB INFO:OpenGL.extensions:Chose alternate: glDisableVertexAttribArrayARB from glDisableVertexAttribArray, glDisableVertexAttribArrayARB |
From: Mike C. F. <mcf...@vr...> - 2009-08-18 16:34:56
|
Joshua Davis wrote: ... > Thanks a lot; I've got it installed now. The shader_4.py tutorial now > runs without raising any errors, but it doesn't seem to generate any > fragments; it's just a white screen. (This seems to be exactly what > happened with my own vertex attribute array code.) I've pasted its > console output below. > > I'm using PyOpenGL 3.0.1a3. Maybe this is relevant: My hardware is an > ATI Radeon 9600, which is supposed to support OpenGL 2.0, but the > output below suggests that it's providing only OpenGL 1.5. Is this a > driver issue? I'm on Mac OS X 10.4.11, and Apple updates drivers > automatically. OpenGL 1.5 should be enough for VBOs anyway. As an > aside, elsewhere in my application I'm using framebuffer objects with > no problem. > The 9600 is definitely using the ARB versions of the extensions, not core. That shouldn't matter. As noted, when I disable core on my Linux machines I can run your code with the ARB versions. The 9600 is a relatively old architecture (2002), so it's not impossible that it doesn't properly handle attributes. I see at least one mesa changelog where glGetAttribLocation was always returning 1 for every call, but that's extremely old now. Can you add these lines to the top of your script and run it, please: import logging logging.basicConfig( level = logging.DEBUG ) import OpenGL OpenGL.FULL_LOGGING = True it'll dump every call it makes onto the console, include all the parameters it's passing. That should let me inspect and see if we're getting the wrong values showing up at the GL level. Good luck, Mike -- ________________________________________________ Mike C. Fletcher Designer, VR Plumber, Coder http://www.vrplumber.com http://blog.vrplumber.com |
From: Joshua D. <joshuardavis@q.com> - 2009-08-18 18:00:57
|
On 2009 Aug 18 , at 11:34 AM, Mike C. Fletcher wrote: > Joshua Davis wrote: >> I'm using PyOpenGL 3.0.1a3. Maybe this is relevant: My hardware is an >> ATI Radeon 9600, which is supposed to support OpenGL 2.0, but the >> output below suggests that it's providing only OpenGL 1.5. Is this a >> driver issue? I'm on Mac OS X 10.4.11, and Apple updates drivers >> automatically. OpenGL 1.5 should be enough for VBOs anyway. As an >> aside, elsewhere in my application I'm using framebuffer objects with >> no problem. >> > The 9600 is definitely using the ARB versions of the extensions, not > core. That shouldn't matter. As noted, when I disable core on my > Linux > machines I can run your code with the ARB versions. The 9600 is a > relatively old architecture (2002), so it's not impossible that it > doesn't properly handle attributes. I see at least one mesa changelog > where glGetAttribLocation was always returning 1 for every call, but My two calls to glGetAttribLocation() return 1 and 2, so that's not the problem. > that's extremely old now. Can you add these lines to the top of your > script and run it, please: > > import logging > logging.basicConfig( level = logging.DEBUG ) > import OpenGL > OpenGL.FULL_LOGGING = True > > it'll dump every call it makes onto the console, include all the > parameters it's passing. That should let me inspect and see if we're > getting the wrong values showing up at the GL level. This is a great debugging tool! Thanks. So is it a Numpy vs. Numeric problem? INFO:OpenGL.acceleratesupport:OpenGL_accelerate module loaded INFO:OpenGL.arrays.arraydatatype:Using accelerated ArrayDatatype INFO:OpenGL.formathandler:Unable to load registered array format handler numeric: Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ python2.5/site-packages/OpenGL/arrays/formathandler.py", line 44, in loadPlugin plugin_class = entrypoint.load() File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ python2.5/site-packages/OpenGL/plugins.py", line 14, in load return importByName( self.import_path ) File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ python2.5/site-packages/OpenGL/plugins.py", line 28, in importByName module = __import__( ".".join(moduleName), {}, {}, moduleName) File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ python2.5/site-packages/OpenGL/arrays/numeric.py", line 15, in <module> raise ImportError( """No Numeric module present: %s"""%(err)) ImportError: No Numeric module present: No module named Numeric DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_OBJECT_ACTIVE_UNIFORMS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_OBJECT_ATTACHED_OBJECTS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_OBJECT_DELETE_STATUS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_OBJECT_INFO_LOG_LENGTH_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_OBJECT_SHADER_SOURCE_LENGTH_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_OBJECT_SUBTYPE_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_OBJECT_TYPE_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_OBJECT_VALIDATE_STATUS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_PROGRAM_OBJECT_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_SHADER_OBJECT_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.glAttachObjectARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.glDeleteObjectARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.glDetachObjectARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.glGetAttachedObjectsARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.glGetHandleARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.glGetObjectParameterfvARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.glGetObjectParameterivARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.glInitShaderObjectsARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.fragment_shader.glInitFragmentShaderARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_shader.GL_OBJECT_ACTIVE_ATTRIBUTES_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_shader.GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_shader.base_glGetActiveAttribARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_shader.glGetObjectParameterivARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_shader.glInitVertexShaderARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_CURRENT_MATRIX_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_CURRENT_MATRIX_STACK_DEPTH_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX0_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX10_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX11_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX12_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX13_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX14_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX15_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX16_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX17_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX18_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX19_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX1_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX20_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX21_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX22_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX23_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX24_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX25_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX26_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX27_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX28_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX29_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX2_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX30_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX31_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX3_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX4_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX5_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX6_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX7_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX8_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX9_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_ATTRIBS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_ENV_PARAMETERS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_INSTRUCTIONS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_MATRICES_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_PARAMETERS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_TEMPORARIES_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_ADDRESS_REGISTERS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_ATTRIBS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_BINDING_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_ERROR_POSITION_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_ERROR_STRING_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_FORMAT_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_FORMAT_ASCII_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_INSTRUCTIONS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_LENGTH_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_NATIVE_ATTRIBS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_NATIVE_PARAMETERS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_NATIVE_TEMPORARIES_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_PARAMETERS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_STRING_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_TEMPORARIES_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_TRANSPOSE_CURRENT_MATRIX_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_VERTEX_PROGRAM_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glBindProgramARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glDeleteProgramsARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glGenProgramsARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glGetProgramEnvParameterdvARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glGetProgramEnvParameterfvARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glGetProgramLocalParameterdvARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glGetProgramLocalParameterfvARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glGetProgramStringARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glGetProgramivARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glInitVertexProgramARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glProgramEnvParameter4dARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glProgramEnvParameter4dvARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glProgramEnvParameter4fARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glProgramEnvParameter4fvARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glProgramLocalParameter4dARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glProgramLocalParameter4dvARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glProgramLocalParameter4fARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glProgramLocalParameter4fvARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glProgramStringARB INFO:OpenGL.calltrace:glutInitDisplayMode( 18 ) INFO:OpenGL.calltrace:glutInitWindowSize( 512,512 ) INFO:OpenGL.calltrace:glutInitWindowPosition( 0,0 ) INFO:OpenGL.calltrace:glutCreateWindow( 'Test' ) INFO:OpenGL.calltrace:glEnable( GL_DEPTH_TEST ) INFO:OpenGL.calltrace:glViewport( 0,0,512,512 ) INFO:OpenGL.calltrace:glMatrixMode( GL_PROJECTION ) INFO:OpenGL.calltrace:glLoadIdentity( ) INFO:OpenGL.calltrace:glFrustum( -5.0,5.0,-5.0,5.0,1.0,11.0 ) INFO:OpenGL.calltrace:glMatrixMode( GL_MODELVIEW ) INFO:OpenGL.calltrace:glLoadIdentity( ) INFO:OpenGL.calltrace:glTranslatef( 0.0,0.0,-5.0 ) INFO:OpenGL.calltrace:glRotatef( 15.0,0.0,0.0,1.0 ) INFO:OpenGL.calltrace:glRotatef( -45.0,1.0,0.0,0.0 ) INFO:OpenGL.extensions:OpenGL Version: 1.5 ATI-1.4.18 INFO:OpenGL.extensions:GL Extension GL_ARB_shader_objects available INFO:OpenGL.extensions:Chose alternate: glCreateShaderObjectARB from glCreateShader, glCreateShaderObjectARB INFO:OpenGL.calltrace:glCreateShaderObjectARB( GL_VERTEX_SHADER ) INFO:OpenGL.extensions:Chose alternate: glShaderSourceARB from glShaderSource, glShaderSourceARB INFO:OpenGL.calltrace:glShaderSourceARB( 1L, 1,<OpenGL.GLUT.special.c_char_p_Array_1 object at 0x204b940>,<numpy.ctypeslib.c_long_Array_1 object at 0x204b8f0> ) INFO:OpenGL.extensions:Chose alternate: glCompileShaderARB from glCompileShader, glCompileShaderARB INFO:OpenGL.calltrace:glCompileShaderARB( 1L ) INFO:OpenGL.extensions:Chose alternate: glGetObjectParameterivARB from glGetShaderiv, glGetObjectParameterivARB INFO:OpenGL.calltrace:glGetObjectParameterivARB ( 1L,GL_COMPILE_STATUS,array([1]) ) INFO:OpenGL.calltrace:glCreateShaderObjectARB( GL_FRAGMENT_SHADER ) INFO:OpenGL.calltrace:glShaderSourceARB( 2L, 1,<OpenGL.GLUT.special.c_char_p_Array_1 object at 0x204b940>,<numpy.ctypeslib.c_long_Array_1 object at 0x204b850> ) INFO:OpenGL.calltrace:glCompileShaderARB( 2L ) INFO:OpenGL.calltrace:glGetObjectParameterivARB ( 2L,GL_COMPILE_STATUS,array([1]) ) INFO:OpenGL.extensions:Chose alternate: glCreateProgramObjectARB from glCreateProgram, glCreateProgramObjectARB INFO:OpenGL.calltrace:glCreateProgramObjectARB( ) INFO:OpenGL.extensions:Chose alternate: glAttachObjectARB from glAttachShader, glAttachObjectARB INFO:OpenGL.calltrace:glAttachObjectARB( 3L,1L ) INFO:OpenGL.calltrace:glAttachObjectARB( 3L,2L ) INFO:OpenGL.extensions:Chose alternate: glLinkProgramARB from glLinkProgram, glLinkProgramARB INFO:OpenGL.calltrace:glLinkProgramARB( 3L ) INFO:OpenGL.extensions:Chose alternate: glValidateProgramARB from glValidateProgram, glValidateProgramARB INFO:OpenGL.calltrace:glValidateProgramARB( 3L ) INFO:OpenGL.extensions:Chose alternate: glGetObjectParameterivARB from glGetProgramiv, glGetObjectParameterivARB INFO:OpenGL.calltrace:glGetObjectParameterivARB ( 3L,GL_VALIDATE_STATUS,array([1]) ) INFO:OpenGL.calltrace:glGetObjectParameterivARB ( 3L,GL_LINK_STATUS,array([1]) ) INFO:OpenGL.extensions:Chose alternate: glDeleteObjectARB from glDeleteShader, glDeleteObjectARB INFO:OpenGL.calltrace:glDeleteObjectARB( 1L ) INFO:OpenGL.calltrace:glDeleteObjectARB( 2L ) INFO:OpenGL.extensions:GL Extension GL_ARB_vertex_shader available INFO:OpenGL.extensions:Chose alternate: glGetAttribLocationARB from glGetAttribLocation, glGetAttribLocationARB INFO:OpenGL.calltrace:glGetAttribLocationARB( 3L,'position\x00' ) INFO:OpenGL.calltrace:glGetAttribLocationARB( 3L,'color\x00' ) INFO:OpenGL.calltrace:glClear( 16640 ) INFO:OpenGL.extensions:Chose alternate: glUseProgramObjectARB from glUseProgram, glUseProgramObjectARB INFO:OpenGL.calltrace:glUseProgramObjectARB( 3L ) INFO:OpenGL.extensions:GL Extension GL_ARB_vertex_buffer_object available INFO:OpenGL.calltrace:glGenBuffers( 1,array([0], dtype=uint32) ) INFO:OpenGL.calltrace:glBindBuffer( 34962L,1L ) INFO:OpenGL.calltrace:glBufferData( 34962L,216,array([[ 0., 1., 0., 0., 1., 0.], [-1., -1., 0., 1., 1., 0.], [ 1., -1., 0., 0., 1., 1.], [ 2., -1., 0., 1., 0., 0.], [ 4., -1., 0., 0., 1., 0.], [ 4., 1., 0., 0., 0., 1.], [ 2., -1., 0., 1., 0., 0.], [ 4., 1., 0., 0., 0., 1.], [ 2., 1., 0., 0., 1., 1.]], dtype=float32),35048L ) INFO:OpenGL.extensions:GL Extension GL_ARB_vertex_program available INFO:OpenGL.extensions:Chose alternate: glVertexAttribPointerARB from glVertexAttribPointer, glVertexAttribPointerARB INFO:OpenGL.calltrace:glVertexAttribPointerARB( 1,3,GL_FLOAT,False, 24,c_void_p(None) ) INFO:OpenGL.calltrace:glVertexAttribPointerARB( 2,3,GL_FLOAT,False, 24,c_void_p(12) ) INFO:OpenGL.extensions:Chose alternate: glEnableVertexAttribArrayARB from glEnableVertexAttribArray, glEnableVertexAttribArrayARB INFO:OpenGL.calltrace:glEnableVertexAttribArrayARB( 1 ) INFO:OpenGL.calltrace:glEnableVertexAttribArrayARB( 2 ) INFO:OpenGL.calltrace:glDrawArrays( GL_TRIANGLES,0,9 ) INFO:OpenGL.calltrace:glBindBuffer( 34962L,0 ) INFO:OpenGL.extensions:Chose alternate: glDisableVertexAttribArrayARB from glDisableVertexAttribArray, glDisableVertexAttribArrayARB INFO:OpenGL.calltrace:glDisableVertexAttribArrayARB( 1 ) INFO:OpenGL.calltrace:glDisableVertexAttribArrayARB( 2 ) INFO:OpenGL.calltrace:glUseProgramObjectARB( 0 ) INFO:OpenGL.calltrace:glFlush( ) INFO:OpenGL.calltrace:glutSwapBuffers( ) INFO:OpenGL.calltrace:glutMainLoop( ) INFO:OpenGL.calltrace:glClear( 16640 ) INFO:OpenGL.calltrace:glUseProgramObjectARB( 3L ) INFO:OpenGL.calltrace:glBindBuffer( 34962L,1L ) INFO:OpenGL.calltrace:glVertexAttribPointerARB( 1,3,GL_FLOAT,False, 24,c_void_p(None) ) INFO:OpenGL.calltrace:glVertexAttribPointerARB( 2,3,GL_FLOAT,False, 24,c_void_p(12) ) INFO:OpenGL.calltrace:glEnableVertexAttribArrayARB( 1 ) INFO:OpenGL.calltrace:glEnableVertexAttribArrayARB( 2 ) INFO:OpenGL.calltrace:glDrawArrays( GL_TRIANGLES,0,9 ) INFO:OpenGL.calltrace:glBindBuffer( 34962L,0 ) INFO:OpenGL.calltrace:glDisableVertexAttribArrayARB( 1 ) INFO:OpenGL.calltrace:glDisableVertexAttribArrayARB( 2 ) INFO:OpenGL.calltrace:glUseProgramObjectARB( 0 ) INFO:OpenGL.calltrace:glFlush( ) INFO:OpenGL.calltrace:glutSwapBuffers( ) |
From: Joshua D. <joshuardavis@q.com> - 2009-08-19 16:46:45
|
>> that's extremely old now. Can you add these lines to the top of your >> script and run it, please: >> >> import logging >> logging.basicConfig( level = logging.DEBUG ) >> import OpenGL >> OpenGL.FULL_LOGGING = True >> >> it'll dump every call it makes onto the console, include all the >> parameters it's passing. That should let me inspect and see if we're >> getting the wrong values showing up at the GL level. Update: I've run the same program on a friend's computer, which is GeForce 8600M GT (OpenGL 3.0), Mac OX 10.5.8, Python 2.5.1, Numpy 1.3.0, PyOpenGL 3.0.1a3. The program works perfectly (whereas on my machine, a Radeon 9600, it produces no fragments). The debugging output is listed below. One thing I notice is that glVertexAttribPointer() is used on my friend's computer, whereas glVertexAttribPointerARB() is used on mine. I think that even a Radeon 9600 is capable of using vertex attribute arrays, but if supporting hardware this old is not worth your time, then let me know; I can take it. bash$ python vboattrib.py INFO:OpenGL.acceleratesupport:No OpenGL_accelerate module loaded: No module named OpenGL_accelerate INFO:OpenGL.formathandler:Unable to load registered array format handler numeric: Traceback (most recent call last): File "/Library/Python/2.5/site-packages/OpenGL/arrays/ formathandler.py", line 44, in loadPlugin plugin_class = entrypoint.load() File "/Library/Python/2.5/site-packages/OpenGL/plugins.py", line 14, in load return importByName( self.import_path ) File "/Library/Python/2.5/site-packages/OpenGL/plugins.py", line 28, in importByName module = __import__( ".".join(moduleName), {}, {}, moduleName) File "/Library/Python/2.5/site-packages/OpenGL/arrays/numeric.py", line 15, in <module> raise ImportError( """No Numeric module present: %s"""%(err)) ImportError: No Numeric module present: No module named Numeric DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_OBJECT_ACTIVE_UNIFORMS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_OBJECT_ATTACHED_OBJECTS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_OBJECT_DELETE_STATUS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_OBJECT_INFO_LOG_LENGTH_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_OBJECT_SHADER_SOURCE_LENGTH_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_OBJECT_SUBTYPE_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_OBJECT_TYPE_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_OBJECT_VALIDATE_STATUS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_PROGRAM_OBJECT_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.GL_SHADER_OBJECT_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.glAttachObjectARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.glDeleteObjectARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.glDetachObjectARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.glGetAttachedObjectsARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.glGetHandleARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.glGetObjectParameterfvARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.glGetObjectParameterivARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.shader_objects.glInitShaderObjectsARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.fragment_shader.glInitFragmentShaderARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_shader.GL_OBJECT_ACTIVE_ATTRIBUTES_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_shader.GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_shader.base_glGetActiveAttribARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_shader.glGetObjectParameterivARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_shader.glInitVertexShaderARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_CURRENT_MATRIX_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_CURRENT_MATRIX_STACK_DEPTH_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX0_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX10_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX11_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX12_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX13_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX14_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX15_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX16_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX17_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX18_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX19_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX1_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX20_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX21_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX22_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX23_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX24_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX25_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX26_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX27_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX28_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX29_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX2_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX30_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX31_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX3_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX4_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX5_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX6_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX7_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX8_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MATRIX9_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_ATTRIBS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_ENV_PARAMETERS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_INSTRUCTIONS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_MATRICES_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_PARAMETERS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_MAX_PROGRAM_TEMPORARIES_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_ADDRESS_REGISTERS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_ATTRIBS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_BINDING_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_ERROR_POSITION_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_ERROR_STRING_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_FORMAT_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_FORMAT_ASCII_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_INSTRUCTIONS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_LENGTH_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_NATIVE_ATTRIBS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_NATIVE_PARAMETERS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_NATIVE_TEMPORARIES_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_PARAMETERS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_STRING_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_TEMPORARIES_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_TRANSPOSE_CURRENT_MATRIX_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.GL_VERTEX_PROGRAM_ARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glBindProgramARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glDeleteProgramsARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glGenProgramsARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glGetProgramEnvParameterdvARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glGetProgramEnvParameterfvARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glGetProgramLocalParameterdvARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glGetProgramLocalParameterfvARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glGetProgramStringARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glGetProgramivARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glInitVertexProgramARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glProgramEnvParameter4dARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glProgramEnvParameter4dvARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glProgramEnvParameter4fARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glProgramEnvParameter4fvARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glProgramLocalParameter4dARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glProgramLocalParameter4dvARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glProgramLocalParameter4fARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glProgramLocalParameter4fvARB DEBUG:OpenGL.GL.shaders:Found no alternate for: OpenGL.GL.ARB.vertex_program.glProgramStringARB INFO:OpenGL.calltrace:glutInitDisplayMode( 18 ) INFO:OpenGL.calltrace:glutInitWindowSize( 512,512 ) INFO:OpenGL.calltrace:glutInitWindowPosition( 0,0 ) INFO:OpenGL.calltrace:glutCreateWindow( 'Test' ) INFO:OpenGL.calltrace:glEnable( GL_DEPTH_TEST ) INFO:OpenGL.calltrace:glViewport( 0,0,512,512 ) INFO:OpenGL.calltrace:glMatrixMode( GL_PROJECTION ) INFO:OpenGL.calltrace:glLoadIdentity( ) INFO:OpenGL.calltrace:glFrustum( -5.0,5.0,-5.0,5.0,1.0,11.0 ) INFO:OpenGL.calltrace:glMatrixMode( GL_MODELVIEW ) INFO:OpenGL.calltrace:glLoadIdentity( ) INFO:OpenGL.calltrace:glTranslatef( 0.0,0.0,-5.0 ) INFO:OpenGL.calltrace:glRotatef( 15.0,0.0,0.0,1.0 ) INFO:OpenGL.calltrace:glRotatef( -45.0,1.0,0.0,0.0 ) INFO:OpenGL.extensions:OpenGL Version: 2.0 NVIDIA-1.5.48 INFO:OpenGL.extensions:Chose alternate: glCreateShader from glCreateShader, glCreateShaderObjectARB INFO:OpenGL.calltrace:glCreateShader( GL_VERTEX_SHADER ) INFO:OpenGL.extensions:Chose alternate: glShaderSource from glShaderSource, glShaderSourceARB INFO:OpenGL.calltrace:dataPointer( <class 'OpenGL.arrays.arraydatatype.GLcharArray'>,'\n attribute vec3 position;\n attribute vec3 color;\n void main()\n {\n gl_Position = gl_ModelViewProjectionMatrix * vec4(position, 1.0); \n gl_FrontColor = vec4(color, 1.0);\n }' ) INFO:OpenGL.calltrace:glShaderSource( 1L, 1,<OpenGL.GLUT.special.c_char_p_Array_1 object at 0x1b3d440>,<OpenGL.converters.c_long_Array_1 object at 0x1b398a0> ) INFO:OpenGL.calltrace:from_param( <class 'OpenGL.arrays.arraydatatype.GLintArray'>,<OpenGL.converters.c_long_Arra y_1 object at 0x1b398a0> ) INFO:OpenGL.extensions:Chose alternate: glCompileShader from glCompileShader, glCompileShaderARB INFO:OpenGL.calltrace:glCompileShader( 1L ) INFO:OpenGL.extensions:Chose alternate: glGetShaderiv from glGetShaderiv, glGetObjectParameterivARB INFO:OpenGL.calltrace:zeros( <class 'OpenGL.arrays.arraydatatype.GLintArray'>,(1,) ) INFO:OpenGL.calltrace:glGetShaderiv( 1L,GL_COMPILE_STATUS,array([1]) ) INFO:OpenGL.calltrace:from_param( <class 'OpenGL.arrays.arraydatatype.GLintArray'>,array([1]) ) INFO:OpenGL.calltrace:glCreateShader( GL_FRAGMENT_SHADER ) INFO:OpenGL.calltrace:dataPointer( <class 'OpenGL.arrays.arraydatatype.GLcharArray'>,'\n void main()\n {\n gl_FragColor = gl_Color;\n //gl_FragColor = vec4 (1.0, 0.0, 1.0, 1.0);\n }' ) INFO:OpenGL.calltrace:glShaderSource( 2L, 1,<OpenGL.GLUT.special.c_char_p_Array_1 object at 0x1b398a0>,<OpenGL.converters.c_long_Array_1 object at 0x1b39f30> ) INFO:OpenGL.calltrace:from_param( <class 'OpenGL.arrays.arraydatatype.GLintArray'>,<OpenGL.converters.c_long_Arra y_1 object at 0x1b39f30> ) INFO:OpenGL.calltrace:glCompileShader( 2L ) INFO:OpenGL.calltrace:zeros( <class 'OpenGL.arrays.arraydatatype.GLintArray'>,(1,) ) INFO:OpenGL.calltrace:glGetShaderiv( 2L,GL_COMPILE_STATUS,array([1]) ) INFO:OpenGL.calltrace:from_param( <class 'OpenGL.arrays.arraydatatype.GLintArray'>,array([1]) ) INFO:OpenGL.extensions:Chose alternate: glCreateProgram from glCreateProgram, glCreateProgramObjectARB INFO:OpenGL.calltrace:glCreateProgram( ) INFO:OpenGL.extensions:Chose alternate: glAttachShader from glAttachShader, glAttachObjectARB INFO:OpenGL.calltrace:glAttachShader( 3L,1L ) INFO:OpenGL.calltrace:glAttachShader( 3L,2L ) INFO:OpenGL.extensions:Chose alternate: glLinkProgram from glLinkProgram, glLinkProgramARB INFO:OpenGL.calltrace:glLinkProgram( 3L ) INFO:OpenGL.extensions:Chose alternate: glValidateProgram from glValidateProgram, glValidateProgramARB INFO:OpenGL.calltrace:glValidateProgram( 3L ) INFO:OpenGL.extensions:Chose alternate: glGetProgramiv from glGetProgramiv, glGetObjectParameterivARB INFO:OpenGL.calltrace:zeros( <class 'OpenGL.arrays.arraydatatype.GLintArray'>,(1,) ) INFO:OpenGL.calltrace:glGetProgramiv( 3L,GL_VALIDATE_STATUS,array([0]) ) INFO:OpenGL.calltrace:from_param( <class 'OpenGL.arrays.arraydatatype.GLintArray'>,array([0]) ) INFO:OpenGL.calltrace:zeros( <class 'OpenGL.arrays.arraydatatype.GLintArray'>,(1,) ) INFO:OpenGL.calltrace:glGetProgramiv( 3L,GL_LINK_STATUS,array([0]) ) INFO:OpenGL.calltrace:from_param( <class 'OpenGL.arrays.arraydatatype.GLintArray'>,array([0]) ) INFO:OpenGL.extensions:Chose alternate: glDeleteShader from glDeleteShader, glDeleteObjectARB INFO:OpenGL.calltrace:glDeleteShader( 1L ) INFO:OpenGL.calltrace:glDeleteShader( 2L ) INFO:OpenGL.extensions:Chose alternate: glGetAttribLocation from glGetAttribLocation, glGetAttribLocationARB INFO:OpenGL.calltrace:glGetAttribLocation( 3,'position\x00' ) INFO:OpenGL.calltrace:from_param( <class 'OpenGL.arrays.arraydatatype.GLcharArray'>,'position\x00' ) INFO:OpenGL.calltrace:glGetAttribLocation( 3,'color\x00' ) INFO:OpenGL.calltrace:from_param( <class 'OpenGL.arrays.arraydatatype.GLcharArray'>,'color\x00' ) 0 1 INFO:OpenGL.calltrace:glClear( 16640 ) INFO:OpenGL.extensions:Chose alternate: glUseProgram from glUseProgram, glUseProgramObjectARB INFO:OpenGL.calltrace:glUseProgram( 3 ) INFO:OpenGL.extensions:GL Extension GL_ARB_vertex_buffer_object available INFO:OpenGL.calltrace:zeros( <class 'OpenGL.arrays.arraydatatype.GLuintArray'>,(1,) ) INFO:OpenGL.calltrace:glGenBuffers( 1,array([0], dtype=uint32) ) INFO:OpenGL.calltrace:from_param( <class 'OpenGL.arrays.arraydatatype.GLuintArray'>,array([0], dtype=uint32) ) INFO:OpenGL.calltrace:glBindBuffer( GL_ARRAY_BUFFER,1L ) INFO:OpenGL.calltrace:asArray( <class 'OpenGL.arrays.arraydatatype.ArrayDatatype'>,array([[ 0., 1., 0., 0., 1., 0.], [-1., -1., 0., 1., 1., 0.], [ 1., -1., 0., 0., 1., 1.], [ 2., -1., 0., 1., 0., 0.], [ 4., -1., 0., 0., 1., 0.], [ 4., 1., 0., 0., 0., 1.], [ 2., -1., 0., 1., 0., 0.], [ 4., 1., 0., 0., 0., 1.], [ 2., 1., 0., 0., 1., 1.]], dtype=float32) ) INFO:OpenGL.calltrace:arrayByteCount( <class 'OpenGL.arrays.arraydatatype.ArrayDatatype'>,array([[ 0., 1., 0., 0., 1., 0.], [-1., -1., 0., 1., 1., 0.], [ 1., -1., 0., 0., 1., 1.], [ 2., -1., 0., 1., 0., 0.], [ 4., -1., 0., 0., 1., 0.], [ 4., 1., 0., 0., 0., 1.], [ 2., -1., 0., 1., 0., 0.], [ 4., 1., 0., 0., 0., 1.], [ 2., 1., 0., 0., 1., 1.]], dtype=float32) ) INFO:OpenGL.calltrace:glBufferData( GL_ARRAY_BUFFER,216,array([[ 0., 1., 0., 0., 1., 0.], [-1., -1., 0., 1., 1., 0.], [ 1., -1., 0., 0., 1., 1.], [ 2., -1., 0., 1., 0., 0.], [ 4., -1., 0., 0., 1., 0.], [ 4., 1., 0., 0., 0., 1.], [ 2., -1., 0., 1., 0., 0.], [ 4., 1., 0., 0., 0., 1.], [ 2., 1., 0., 0., 1., 1.]], dtype=float32),GL_DYNAMIC_DRAW ) INFO:OpenGL.calltrace:from_param( <class 'OpenGL.arrays.arraydatatype.ArrayDatatype'>,array([[ 0., 1., 0., 0., 1., 0.], [-1., -1., 0., 1., 1., 0.], [ 1., -1., 0., 0., 1., 1.], [ 2., -1., 0., 1., 0., 0.], [ 4., -1., 0., 0., 1., 0.], [ 4., 1., 0., 0., 0., 1.], [ 2., -1., 0., 1., 0., 0.], [ 4., 1., 0., 0., 0., 1.], [ 2., 1., 0., 0., 1., 1.]], dtype=float32) ) INFO:OpenGL.extensions:Chose alternate: glVertexAttribPointer from glVertexAttribPointer, glVertexAttribPointerARB INFO:OpenGL.calltrace:asArray( <class 'OpenGL.arrays.arraydatatype.ArrayDatatype'>,<OpenGL.arrays.vbo.VBO object at 0x1b5ba50> ) INFO:OpenGL.calltrace:voidDataPointer( <class 'OpenGL.arrays.arraydatatype.ArrayDatatype'>,<OpenGL.arrays.vbo.VBO object at 0x1b5ba50> ) INFO:OpenGL.calltrace:dataPointer( <class 'OpenGL.arrays.arraydatatype.ArrayDatatype'>,<OpenGL.arrays.vbo.VBO object at 0x1b5ba50> ) INFO:OpenGL.calltrace:glVertexAttribPointer( 0,3,GL_FLOAT,False, 24,c_void_p(None) ) INFO:OpenGL.calltrace:from_param( <class 'OpenGL.arrays.arraydatatype.ArrayDatatype'>,c_void_p(None) ) INFO:OpenGL.calltrace:asArray( <class 'OpenGL.arrays.arraydatatype.ArrayDatatype'>,<OpenGL.arrays.vbo.VBOOffse t object at 0x1b65670> ) INFO:OpenGL.calltrace:voidDataPointer( <class 'OpenGL.arrays.arraydatatype.ArrayDatatype'>,<OpenGL.arrays.vbo.VBOOffse t object at 0x1b65670> ) INFO:OpenGL.calltrace:dataPointer( <class 'OpenGL.arrays.arraydatatype.ArrayDatatype'>,<OpenGL.arrays.vbo.VBOOffse t object at 0x1b65670> ) INFO:OpenGL.calltrace:glVertexAttribPointer( 1,3,GL_FLOAT,False, 24,c_void_p(12) ) INFO:OpenGL.calltrace:from_param( <class 'OpenGL.arrays.arraydatatype.ArrayDatatype'>,c_void_p(12) ) INFO:OpenGL.extensions:Chose alternate: glEnableVertexAttribArray from glEnableVertexAttribArray, glEnableVertexAttribArrayARB INFO:OpenGL.calltrace:glEnableVertexAttribArray( 0 ) INFO:OpenGL.calltrace:glEnableVertexAttribArray( 1 ) INFO:OpenGL.calltrace:glDrawArrays( GL_TRIANGLES,0,9 ) INFO:OpenGL.calltrace:glBindBuffer( GL_ARRAY_BUFFER,0 ) INFO:OpenGL.extensions:Chose alternate: glDisableVertexAttribArray from glDisableVertexAttribArray, glDisableVertexAttribArrayARB INFO:OpenGL.calltrace:glDisableVertexAttribArray( 0 ) INFO:OpenGL.calltrace:glDisableVertexAttribArray( 1 ) INFO:OpenGL.calltrace:glUseProgram( 0 ) INFO:OpenGL.calltrace:glFlush( ) INFO:OpenGL.calltrace:glutSwapBuffers( ) INFO:OpenGL.calltrace:glutMainLoop( ) INFO:OpenGL.calltrace:glClear( 16640 ) INFO:OpenGL.calltrace:glUseProgram( 3 ) INFO:OpenGL.calltrace:glBindBuffer( GL_ARRAY_BUFFER,1L ) INFO:OpenGL.calltrace:asArray( <class 'OpenGL.arrays.arraydatatype.ArrayDatatype'>,<OpenGL.arrays.vbo.VBO object at 0x1b5ba50> ) INFO:OpenGL.calltrace:voidDataPointer( <class 'OpenGL.arrays.arraydatatype.ArrayDatatype'>,<OpenGL.arrays.vbo.VBO object at 0x1b5ba50> ) INFO:OpenGL.calltrace:dataPointer( <class 'OpenGL.arrays.arraydatatype.ArrayDatatype'>,<OpenGL.arrays.vbo.VBO object at 0x1b5ba50> ) INFO:OpenGL.calltrace:glVertexAttribPointer( 0,3,GL_FLOAT,False, 24,c_void_p(None) ) INFO:OpenGL.calltrace:from_param( <class 'OpenGL.arrays.arraydatatype.ArrayDatatype'>,c_void_p(None) ) INFO:OpenGL.calltrace:asArray( <class 'OpenGL.arrays.arraydatatype.ArrayDatatype'>,<OpenGL.arrays.vbo.VBOOffse t object at 0x1b65770> ) INFO:OpenGL.calltrace:voidDataPointer( <class 'OpenGL.arrays.arraydatatype.ArrayDatatype'>,<OpenGL.arrays.vbo.VBOOffse t object at 0x1b65770> ) INFO:OpenGL.calltrace:dataPointer( <class 'OpenGL.arrays.arraydatatype.ArrayDatatype'>,<OpenGL.arrays.vbo.VBOOffse t object at 0x1b65770> ) INFO:OpenGL.calltrace:glVertexAttribPointer( 1,3,GL_FLOAT,False, 24,c_void_p(12) ) INFO:OpenGL.calltrace:from_param( <class 'OpenGL.arrays.arraydatatype.ArrayDatatype'>,c_void_p(12) ) INFO:OpenGL.calltrace:glEnableVertexAttribArray( 0 ) INFO:OpenGL.calltrace:glEnableVertexAttribArray( 1 ) INFO:OpenGL.calltrace:glDrawArrays( GL_TRIANGLES,0,9 ) INFO:OpenGL.calltrace:glBindBuffer( GL_ARRAY_BUFFER,0 ) INFO:OpenGL.calltrace:glDisableVertexAttribArray( 0 ) INFO:OpenGL.calltrace:glDisableVertexAttribArray( 1 ) INFO:OpenGL.calltrace:glUseProgram( 0 ) INFO:OpenGL.calltrace:glFlush( ) INFO:OpenGL.calltrace:glutSwapBuffers( ) |
From: Mike C. F. <mcf...@vr...> - 2009-08-19 17:18:42
|
Joshua Davis wrote: ... > Update: I've run the same program on a friend's computer, which is > GeForce 8600M GT (OpenGL 3.0), Mac OX 10.5.8, Python 2.5.1, Numpy > 1.3.0, PyOpenGL 3.0.1a3. The program works perfectly (whereas on my > machine, a Radeon 9600, it produces no fragments). The debugging > output is listed below. One thing I notice is that > glVertexAttribPointer() is used on my friend's computer, whereas > glVertexAttribPointerARB() is used on mine. > Right, your machine doesn't provide OpenGL 2.x, theirs does. The extension *should* work if it is present, and as noted, when I use the ARB versions of the entry points here, the code still produces fragments. > I think that even a Radeon 9600 is capable of using vertex attribute > arrays, but if supporting hardware this old is not worth your time, > then let me know; I can take it. > AFAICS the code is producing the correct calls to OpenGL to produce the results. Possibilities still open: * hardware doesn't "really" support shader attributes (or supports them with quirks/extra requirements) * the PyOpenGL OpenGL.GL.shaders module may have a bug in how it maps calls into ARB (but not into core), where the more modern implementations are able to handle the "off" mapping, but not the older implementations o may be some setup missing that older implementation requires? o may be some call that's not raising errors, but doesn't match required usage on 9600 implementation? * ?? we're probably to the point now where the paths to try to fix it would be: * ask on an OpenGL experts forum about what the code should do to get attributes working on 9600s * find some old (C) OpenGL code that worked with a 9600 and shader attributes, ATI's developer site might have something of this vintage kicking around. Comparing against what we're doing may show something missing/wrong for the older hardware. You might have luck in either of those directions. I'm hesitant to explore them without having hardware on which to test hypotheses, but if you find something I can certainly try to help with it. HTH, Mike -- ________________________________________________ Mike C. Fletcher Designer, VR Plumber, Coder http://www.vrplumber.com http://blog.vrplumber.com |
From: Mike C. F. <mcf...@vr...> - 2009-08-19 16:59:58
|
Joshua Davis wrote: ... >> that's extremely old now. Can you add these lines to the top of your >> script and run it, please: >> >> import logging >> logging.basicConfig( level = logging.DEBUG ) >> import OpenGL >> OpenGL.FULL_LOGGING = True >> >> it'll dump every call it makes onto the console, include all the >> parameters it's passing. That should let me inspect and see if we're >> getting the wrong values showing up at the GL level. > > > This is a great debugging tool! Thanks. So is it a Numpy vs. Numeric > problem? Nope, the info-log there is just telling you that the registered Numeric (old Numpy) handler isn't loadable. That's normal and desirable, you don't want to be using Numeric in modern code, it's available for backward compatibility with old software that doesn't want to convert to Numpy. The trace looks fine. There's an unlikely possibility, which is that the shader compilation happening before mainloop/display callback might fail on OSX's GLUT. To test that, comment out the calls to initializeShaders and handleDisplayEvent at the top-level of your test script and add: if not shaderProgram: initializeShaders() to the top of your handleDisplayEvent() function. I doubt *very* strongly that is the problem, as *all* OpenGLContext initialization happens in that same state (post context creation, pre mainloop) and it's never been a problem before. Didn't get to trying the code on friend's Mac last night either. Would be nice if we could confirm that this machine can handle attributes at all (so we know whether this is a problem with the wrapper or the driver). Good luck, Mike -- ________________________________________________ Mike C. Fletcher Designer, VR Plumber, Coder http://www.vrplumber.com http://blog.vrplumber.com |
From: Joshua D. <joshuardavis@q.com> - 2009-08-19 22:38:29
Attachments:
vbolegacyattrib.py
vbolegacyattriboutput.txt
|
On 2009 Aug 19 , at 11:59 AM, Mike C. Fletcher wrote: > The trace looks fine. There's an unlikely possibility, which is that > the shader compilation happening before mainloop/display callback > might > fail on OSX's GLUT. To test that, comment out the calls to > initializeShaders and handleDisplayEvent at the top-level of your test > script and add: > > if not shaderProgram: > initializeShaders() > > to the top of your handleDisplayEvent() function. I doubt *very* > strongly that is the problem, as *all* OpenGLContext initialization > happens in that same state (post context creation, pre mainloop) and > it's never been a problem before. Didn't get to trying the code on > friend's Mac last night either. As you suspected, this was not the problem; making that change did not fix things. > Would be nice if we could confirm that this machine can handle > attributes at all (so we know whether this is a problem with the > wrapper > or the driver). I am attaching a new program and its debugging output. This program uses the legacy glVertexPointer() to specify the vertices, but uses a "color" attribute variable to specify a single color. It works correctly; changing "color" to yellow or magenta causes all fragments to be that color. So my machine/driver/wrapper can handle individual attribute variables, but it has a problem with attribute arrays? I'm going to try to get attribute arrays working from C, as you suggested in your other message. (The specs I've found online for the Radeon 9600 are too vague to be useful.) Until then I'll stop pestering you. Thanks for your help! Josh |
From: Joshua D. <joshuardavis@q.com> - 2009-08-21 21:04:03
|
This issue has been resolved. The fault (if any) is not in PyOpenGL. I've written three C test programs to match my three Python test programs, and the C versions behave identically to the Python versions. It seems that my hardware/driver/OS combination doesn't support setting attribute variables using glVertexAttribPointer(), even though it supports setting attribute variables with glVertexAttrib4f(), etc. (Incidentally, the Mac OS 10.5 driver for the Radeon 9600 supports OpenGL 2.0, but the Mac OS 10.4 driver supports only OpenGL 1.5.) Thanks everyone for your help -- especially Mike. Cheers. Josh On 2009 Aug 19 , at 5:35 PM, Joshua Davis wrote: > On 2009 Aug 19 , at 11:59 AM, Mike C. Fletcher wrote: > >> Would be nice if we could confirm that this machine can handle >> attributes at all (so we know whether this is a problem with the >> wrapper >> or the driver). > > I am attaching a new program and its debugging output. This program > uses the legacy glVertexPointer() to specify the vertices, but uses > a "color" attribute variable to specify a single color. It works > correctly; changing "color" to yellow or magenta causes all > fragments to be that color. So my machine/driver/wrapper can handle > individual attribute variables, but it has a problem with attribute > arrays? > > I'm going to try to get attribute arrays working from C, as you > suggested in your other message. (The specs I've found online for > the Radeon 9600 are too vague to be useful.) Until then I'll stop > pestering you. Thanks for your help! |
From: Mike C. F. <mcf...@vr...> - 2009-08-22 23:35:09
|
Joshua Davis wrote: > This issue has been resolved. The fault (if any) is not in PyOpenGL. > > I've written three C test programs to match my three Python test > programs, and the C versions behave identically to the Python > versions. It seems that my hardware/driver/OS combination doesn't > support setting attribute variables using glVertexAttribPointer(), > even though it supports setting attribute variables with > glVertexAttrib4f(), etc. (Incidentally, the Mac OS 10.5 driver for > the Radeon 9600 supports OpenGL 2.0, but the Mac OS 10.4 driver > supports only OpenGL 1.5.) > > Thanks everyone for your help -- especially Mike. Cheers. > Thanks for the update. Nice to know we don't have a PyOpenGL bug (here). I'll add a note to the tutorial regarding the glVertexAttribPointer issue on Macs with that Radeon. Enjoy, Mike > On 2009 Aug 19 , at 5:35 PM, Joshua Davis wrote: > > >> On 2009 Aug 19 , at 11:59 AM, Mike C. Fletcher wrote: >> >> >>> Would be nice if we could confirm that this machine can handle >>> attributes at all (so we know whether this is a problem with the >>> wrapper >>> or the driver). >>> >> I am attaching a new program and its debugging output. This program >> uses the legacy glVertexPointer() to specify the vertices, but uses >> a "color" attribute variable to specify a single color. It works >> correctly; changing "color" to yellow or magenta causes all >> fragments to be that color. So my machine/driver/wrapper can handle >> individual attribute variables, but it has a problem with attribute >> arrays? >> >> I'm going to try to get attribute arrays working from C, as you >> suggested in your other message. (The specs I've found online for >> the Radeon 9600 are too vague to be useful.) Until then I'll stop >> pestering you. Thanks for your help! >> > > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > PyOpenGL Homepage > http://pyopengl.sourceforge.net > _______________________________________________ > PyOpenGL-Users mailing list > PyO...@li... > https://lists.sourceforge.net/lists/listinfo/pyopengl-users > -- ________________________________________________ Mike C. Fletcher Designer, VR Plumber, Coder http://www.vrplumber.com http://blog.vrplumber.com |
From: Joshua D. <joshuardavis@q.com> - 2009-08-17 14:21:23
Attachments:
vboattrib.py
vbolegacy.py
|
>> I don't see any obvious problems with the attribute-based >> version. I've > done some minimal modifications to create a working full script. I > had > to add some perspective and translation setup (to move the geometry > back > from the viewer). Please consider trying to create this kind of > runnable script when reporting errors, I'm rather short on time to > work > on PyOpenGL and recreating scripts takes time I should be putting into > other tasks. I agree; you're doing valuable work on the project itself and I do not expect you to spend time debugging my code. I didn't include full programs in the interests of keeping my posts small, but in the future I will. The two versions of the program are attached below. They differ only in the initializeShaders() and handleDisplayEvent() functions. But I suppose the better diagnostic tool is the fact that the shader_4.py tutorial doesn't seem to generate any fragments on my machine (see my previous post). Thanks for your help. Josh |
From: Mike C. F. <mcf...@vr...> - 2009-08-18 16:22:13
|
Joshua Davis wrote: >>> I don't see any obvious problems with the attribute-based version. >>> I've ... > The two versions of the program are attached below. They differ only > in the initializeShaders() and handleDisplayEvent() functions. But I > suppose the better diagnostic tool is the fact that the shader_4.py > tutorial doesn't seem to generate any fragments on my machine (see my > previous post). Okay, on 2 Linux AMD64 machines (with a Radeon Mobility 3650 and a Geforce 7600), the two scripts produce exactly the same output, these machines have core shader/vbo support, but the script also works if I disable use of the core libraries and use the ARB extensions on the Radeon machine. Hypotheses: * we could be looking at an error in the ARB versions on the Mac driver (extremely unlikely, this is bog-standard stuff) * could be a bug in how we're wrapping the ARB versions o might be a difference between accelerated/unaccelerated PyOpenGL, but doesn't appear to be (I've tested with both on Linux with this script) o might be a platform-specific requirement for the wrapper that we're missing (would be surprising, given that the rest of the extensions are working) * could be some subtle usage bug that Linux ignores but Mac rejects o I'd be surprised there, this is pretty straight-forward code The fact that shader_4 demonstrates the same effect would suggest that we've got something wrong in the wrapper, but without a Mac to test on I'm somewhat limited here in tracking down the failure. I may be able to have a friend try the script at PyGTA this evening. Good luck, Mike -- ________________________________________________ Mike C. Fletcher Designer, VR Plumber, Coder http://www.vrplumber.com http://blog.vrplumber.com |
From: Ian M. <geo...@gm...> - 2009-08-13 18:35:09
|
On Thu, Aug 13, 2009 at 7:38 AM, Paulo Silva <nit...@gm...> wrote: > > vertexBufferObject = vbo.VBO(...) > > gl.glVertexAttribPointer(positionLocation, 3, GL_FLOAT, False, 24, > > vertexBufferObject) > > > > The second line generates this error: > > > > ctypes.ArgumentError: argument 6: <type 'exceptions.TypeError'>: > > Don't know how to convert parameter 6 > > You might try this code, adapted from my code, which makes use of vertex attributes for normal mapping: vertex_attrib_vbo.bind() glVertexAttribPointer(location,4,GL_FLOAT,GL_FALSE,0,None) The last argument could probably also be 0. Ian |
From: Mike C. F. <mcf...@vr...> - 2009-08-13 18:54:35
|
Ian Mallett wrote: > On Thu, Aug 13, 2009 at 7:38 AM, Paulo Silva <nit...@gm... > <mailto:nit...@gm...>> wrote: > > > vertexBufferObject = vbo.VBO(...) > > gl.glVertexAttribPointer(positionLocation, 3, GL_FLOAT, False, 24, > > vertexBufferObject) > > > > The second line generates this error: > > > > ctypes.ArgumentError: argument 6: <type 'exceptions.TypeError'>: > > Don't know how to convert parameter 6 > > You might try this code, adapted from my code, which makes use of > vertex attributes for normal mapping: > > vertex_attrib_vbo.bind() > glVertexAttribPointer(location,4,GL_FLOAT,GL_FALSE,0,None) Yup, that should work, even with the raw ctypes APIs. > The last argument could probably also be 0. 0 would be interpreted as a 1-element array of integers. You can (with a bug-fix introduced for 3.0.1) do ctypes.c_void_p( 0 ) if you want to, though. HTH, Mike -- ________________________________________________ Mike C. Fletcher Designer, VR Plumber, Coder http://www.vrplumber.com http://blog.vrplumber.com |