In fact, I work on a software implementing some processes on a "visual" stream.
I don't need all frames' pixels as long as frames are spatially sampled before all. I probably could not read all the buffer but only update relevant cells in a pre-allocated array. Is it correct to use glReadPixels to read one pixel at a time, like this : glReaderPixels(x, y, 1, 1, ..., ...) ? or is there a cleaner method ? Thanks again ! On 12 nov, 20:30, Ian Mallett <geometr...@gmail.com> wrote: > On Fri, Nov 12, 2010 at 11:57 AM, nbl <nblouve...@gmail.com> wrote: > > Thank you Ian ! > > > I just tried it and glReadPixels does the job ! However it clearly > > slows down the rendering loop... > > > Probably because it is a copy operation, is there not a direct access > > method to the pixels data ? > > > Sorry for my ignorance of OpenGL, I guess I would find a good book on > > it ! > > > Nicolas > > Hi, > > SDL exists as a software component usually (except for HW surfaces). This > allows operations to happen on the CPU. Reading data from a SW surface is > as simple as passing pointers around--there's no data copy, because the > memory is already right there. > > By contrast, OpenGL is a state machine based on the GPU. The vertex, > rasterization, and fragment stages all happen there. This allows OpenGL to > be very very fast, because it makes use of graphics hardware. However, it > of course means that if you want to get the data *back* from the graphics > card, you'll need to transfer it across the (relatively slow) graphics bus. > > A better question is probably to ask what you want to do. Except for very > specific cases, a full readback of the entire framebuffer is never truly > necessary. > > Ian