Actually, I would be *very* surprised if PyOpenGL is anywhere near the same speed. PyOpenGL does a lot more than just wrap the C call. In particular, it adds a glGetError call after *every* call to provide Python-like exception-on-error semantics instead of requiring explicit error checks in the code. The current 3.0.0a6 version also does a logging-enabling call for every function (I'm thinking of making that feature default to off, though it would mean less informative error messages). [...snip...] As for the vertex array functionality; we do a *lot* of Python-side code to do a vertex translation. The PyOpenGL 3.x line has a far more flexible engine for the array sources than 2.x did, allowing run-time plugging of new array data-types. The cost of that is some performance penalty on passing each array. Larger arrays push average that expense out over the whole array, so a 10,000 point array would have almost no appreciable overhead (and would likely be faster than PyOpenGL 2.x), while passing in hundreds of 3 or 4 element arrays would show a huge overhead compared to PyOpenGL 2.x (which did all the array conversions in C, but often wound up silently copying the arrays). Have fun, Mike -- ________________________________________________ Mike C. Fletcher Designer, VR Plumber, Coder