Hello Johannes,

Johannes Brunen wrote:
>> hm, I don't know about the specific requirements for printing, ...
>>
> On printing it is most important to support huge canvas sizes since a 
> printer typically does have a much higher resolution than a monitor screen. 
> Besides of memory considerations, the viewport sizes supported by graphics 
> hardware are bounded to some maximum value. So with a naive setup, like the 
> one we are currently using, it is not possible to print say on a A0 plotter 
> with 600dpi. Of course, printing should also support all the nice features 
> like textures and program shader rendered scenes.
> 
> So what would be a good printing strategy?
> 
> 1. Tiling of the viewport and drawing the tiles independently. Subsequential 
> assembly of the final printing image and outputting the image on the 
> printing device.
> 2. Not use of the windows memory context, i.e. writing the pixel information 
> directly into some image file format.

if I understood correctly I'd say do both :)
Tiling will allow you to get high resolution and not using the memory 
context should ensure that you can render with all features (multi 
texturing, shaders) that you use for the displayed image.

> I will try to solve this problem in the near future. Maybe, I will ask some 
> questions about pixel buffers and/or FBO which are new for me.
> 
> Unfortunately, I do not only have the OpenSG scene, but additional rendered 
> OpenGL stuff in the same window.

You should be able to render into the FBO with pure OpenGL, I think it 
is sufficient to call FrameBufferObject::activate()/deactivate() to 
redirect rendering into the FBO.

>> imagine if you have an image that there must be some way to print it. So
>> my guess would be that you can simply render with an FBO, download the
>> image/texture from the GPU into main memory
>>
> terra incognita...

Examples/Simple/fbotexture.cpp demonstrates the basic setup to render 
into an FBO and then use the texture.
To download a color attachments to main memory, set
fbo->setPostProcessOnDeactivate(true);
and
renderBuffer->setReadBack(true);

        Cheers,
                Carsten

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Opensg-users mailing list
Opensg-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to