[eq-dev] How to readback more than Color and depth buffers?
Stefan Eilemann
eilemann at gmail.com
Mon May 12 14:42:03 CEST 2008
On 9. May 2008, at 0:15, 常辉 wrote:
> Yeah, that is floating point FBO
> We want to write more pixel data into FBO as rendering at channels
> maybe it can be seemed as readback two textures each frame and do
> more fragment shading
> work after composited, that is more like deferred shading.
You can read back more than image per output frame. Does that help?
> I've browsed source codes in client lib, but in my oppinion, the two
> eq::Image::Pixel objects '_colorPixels' and '_depthPixels' restrict
> the readable pixel data to no more than 64 bits totally.
Why is that? If you extend Image::getDepth to return the correct pixel
depth for your format/type, the accurate amount of data should be
allocated.
> Could anybody give some advice about how to readback frame data more
> than 64bits/pixel
Where do you see the limitation of 64 Bit/Pixel?
> and how to readback pixel data by the methods other than
> 'glReadPixels', must we rewrite the eq::Image class completely?
What do you want to use? glGetTexImage?
> Current eq just support reading back from framebuffer, right?
Correct.
> so we must do it by extending 'eq::Image' for texture readback,
That would be one way. I'll think about it, but maybe we need to
introduce a source/target enum for the Image!?
> and composite by ourself
> in 'eq::Compositor' class?
You don't need to do in the Compositor class. This is just a bunch of
static functions, which you can use if it helps. Otherwise just
implement what you need in Channel::frameAssemble, unless your use
case is generic. In this case, extending the Compositor makes sense.
HTH,
Stefan.
More information about the eq-dev
mailing list