Thread: [PyOpenGL-Users] experimental "buffer" protocol array support in 3.1
Brought to you by:
mcfletch
From: Antoine M. <an...@na...> - 2014-02-24 15:55:27
|
Hi, Can you expand on this new buffer protocol? Is worth using yet? I have some pixels stored in <type 'buffer'>, and at the moment I end up making a copy of the pixels to a simple python string before uploading them with glTexSubImage2D. Wouldn't it be better to use this new buffer protocol when available? (or maybe even something else?) If so, how can I easily test for the availability of the this array handler? (I've had a brief look arraydatatype.py and quickly got utterly lost..) Thanks Antoine |
From: Mike C. F. <mcf...@vr...> - 2014-02-24 21:13:56
|
On 14-02-24 10:36 AM, Antoine Martin wrote: > Hi, > > Can you expand on this new buffer protocol? Is worth using yet? At the moment it's only registered for __builtin__.memoryview and __builtin__.bytearray objects. Internally it uses memoryview on the buffer-api supporting objects, and the <buffer> object doesn't *seem* to be compatible (?? weird). If you can get your buffer object into a buffer-api supporting object (something you can call memoryview() on) you should be able to pass it into the APIs. As for testing for support, if OpenGL.version.__version__.split('.')[:2] >= ['3','1']: then you should have the buffer api handler. Hope that helps, Mike -- ________________________________________________ Mike C. Fletcher Designer, VR Plumber, Coder http://www.vrplumber.com http://blog.vrplumber.com |
From: Antoine M. <an...@na...> - 2014-04-07 11:46:40
|
On 25/02/14 04:13, Mike C. Fletcher wrote: > On 14-02-24 10:36 AM, Antoine Martin wrote: >> Hi, >> >> Can you expand on this new buffer protocol? Is worth using yet? > At the moment it's only registered for __builtin__.memoryview and > __builtin__.bytearray objects. Internally it uses memoryview on the > buffer-api supporting objects, and the <buffer> object doesn't *seem* to > be compatible (?? weird). Yes, that's really annoying. See "Ugliness of 2.7": http://demianbrecht.github.io/posts/2013/02/10/buffer-and-memoryview/#ugliness > If you can get your buffer object into a > buffer-api supporting object (something you can call memoryview() on) > you should be able to pass it into the APIs. > > As for testing for support, > > if OpenGL.version.__version__.split('.')[:2] >= ['3','1']: > > then you should have the buffer api handler. Thanks! I have finally tested it properly and it all works fine. Cheers Antoine |