glDrawArrays
Mike C. Fletcher
mcfletch at rogers.com
Thu Aug 29 09:37:04 EDT 2002
Here's code from the OpenGLContext glDrawArrays demo:
from OpenGLContext import testingcontext
BaseContext, MainFunction = testingcontext.getInteractive()
from OpenGL.GL import *
from Numeric import array
import string
from OpenGLContext.tests import flower_geometry
class TestContext( BaseContext):
def Render( self, mode = 0):
BaseContext.Render( self, mode )
glVertexPointerd(flower_geometry.points_expanded )
glNormalPointerf(flower_geometry.normals_expanded )
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glDrawArrays(GL_TRIANGLES, 0, len(flower_geometry.points_expanded))
(Where the points_expanded array is just an x*3 array of vertex
coordinates and normals_expanded is the same for normals).
That works fine on my Win2K box. See also the gldrawarrays_string demo
in OpenGLContext. As for portability, glDrawArrays is (if I recall
correctly) an OpenGL 1.1 feature, so potentially you might find some
really old systems that only have OpenGL 1.0 that don't work with it,
but basically you can rely on it in most situations.
Note, that the array-drawing functionality, though generally fast enough
for anything you can do in Python, does require the transfer of the
array data across the AGP bus. If you're rendering _static_ geometry on
modern hardware it can be faster to use a display list.
If that doesn't help, please send me the exception output for the tests
that aren't working for you so I can try to figure out what's going wrong.
HTH,
Mike
Copied to the PyOpenGL list for archival purposes...
Max Biagi wrote:
> Hi!
> I try to port this code to python:
>
> void Draw(){
> glColorPointer(4, GL_UNSIGNED_BYTE, 0, datColor);
> glVertexPointer(3, GL_FLOAT, 0, datVertex3D);
> glTexCoordPointer(2, GL_FLOAT, 0, datTexCoord);
> glDrawArrays(GL_QUADS,0,datVtx);
> }
>
> I foud 3 demos of glDrawArrays in PyOpenGl distribution but none is
> working!! (win2000)
> I don't know how to replace c pointers in python.
> I utilize last version of Python, PyOpenGl and PyGame.
>
> Can you point me to a working demo?
>
> I'm looking to portability, do you suggest me to utilize "standard"
> glbegin(GL_QUADS) / glVertex... (that works on my pc) or glDrawArrays
> will work on all platform?
>
> Thanks!
>
>
_______________________________________
Mike C. Fletcher
Designer, VR Plumber, Coder
http://members.rogers.com/mcfletch/
More information about the Python-list
mailing list