Printing a scene graph under windows-Resource Problems

Printing a scene graph under windows-Resource Problems

Post by Robert Rosenbau » Thu, 16 Apr 1998 04:00:00



I have been using the method described in the Inventor Mentor to print my
scene graphs:  I use
an "SoOffscreenRenderer" with a SbViewportRegion with WindowSize set to 1/2
the printer's HORZRES by
1/2 the printer's VERTRES.  The PixelsPerInch is set to  the printer's
LOGPIXELSX. After rendering, I bitblt from
the off screen render to the printer DC.

I find with that with my printer set to 300 DPI, I get reasonable printing
performance,but with my printer set to 600 DPI (which gives
the quality I need) the time and memory usage goes through the roof, often
leading my NT system with 64 meg of RAM
and 1/4 meg of free disk space to run out of virtual memory.

Meanwhile, in the Microsoft OpenGL documentation, there are references to a
method for causing OpenGL to render directly to
a metafile. See, for instance,
http://premium.microsoft.com/msdn/library/sdkdoc/ntopnglo_7rtx.htm. One of
the advantages
of this method is cited as being that, because "printing an OpenGL image
might require more memory than is available in the
system", OpenGL uses banding to print graphics.  Is there any way to use
this functionality with OpenInventor (or is Open Inventor
already using it ?).

Any advice on the best way to print would be appreciated.

 
 
 

Printing a scene graph under windows-Resource Problems

Post by Mik » Fri, 17 Apr 1998 04:00:00



> I have been using the method described in the Inventor Mentor to print my
> scene graphs:  I use
<snip>
> I find with that with my printer set to 300 DPI, I get reasonable printing
> performance,but with my printer set to 600 DPI (which gives
> the quality I need) the time and memory usage goes through the roof, often
> leading my NT system with 64 meg of RAM
> and 1/4 meg of free disk space to run out of virtual memory.

Yep.  You're also likely to run into OpenGL's maximum viewport size
(typically 2048x2048) at some point using 600 dpi.

Quote:> Meanwhile, in the Microsoft OpenGL documentation, there are references to a
> method for causing OpenGL to render directly to
> a metafile. See, for instance,
> http://premium.microsoft.com/msdn/library/sdkdoc/ntopnglo_7rtx.htm.

I haven't actually gotten around to trying this yet, but don't see
any reason it shouldn't work.  Follow their example through calling
wglMakeCurrent, then apply an SoRenderAction to the scene graph
(specifically to the viewer's scene graph if you're letting the
viewer create a camera for you).

One caution: I *think* I read somewhere that OpenGL rendering to a
printer DC is only supported on NT4, ie. not on Win95.

-Mike
 TGS Inc, http://www.tgs.com

 
 
 

Printing a scene graph under windows-Resource Problems

Post by Oliver Heade » Tue, 21 Apr 1998 04:00:00


Mike Heck:

Quote:>One caution: I *think* I read somewhere that OpenGL rendering to a
>printer DC is only supported on NT4, ie. not on Win95.

I'm pretty sure this is true, since I tried for days to get it to work under
Win95 with absolutely no joy whatsoever.    Didn't try NT4, because it _had_
to work under 95.

My application finally used a pretty * method of calculating available
memory on the system, and deciding upon the largest viewport
size/antialiasing pass combinating to produce the best results (basically
from lots of trial and error).

For what it's worth, it's pretty difficult to tell the difference between
rendering to 1024x1024 with a 4 pass antialias and rendering to 2048x2048
(or thereabouts) and printing to an A4 sheet at 600dpi.   Obviously the
bitmap gets stretched rather a lot, but the output is still pretty
excellent, especially to a decent printer with quality drivers and paper.

Olly

 
 
 

1. scene graph to world , world to scene graph

Hi all,

I am having a little problem and I was wondering if someone could help
me find an efficient solution. I am building a scene graph for the
sole purpose of displaying some particle systems in a closed room.
here are a few questions that clarify the nature of the problem:

a) while I want to use the node transforms in order to rotate and
translate a particle emitter, the emitter should give the particle
system coordinates in world coords:

   // the force vector should be affected by the scene graph rotations
   // so the emitter is indeed rotated. the position vector, on
   // the other hand should be in world coordinates.
   system.CreateNewParticle(Vec3 pos, Vec3 force, float mass);

b) in order to draw particles, update particle position and check
collision
   I should know not only the position vector in world coordinates but
also
   the force vector in world coordinates.

any ideas on how to make the transformation in an efficient way
without, say, having to traverse the scene graph more then once? did I
miss some fundamental truth that would make life easier?

help most appreciated :)
Stan.

2. Point within a triangle?

3. OpenGL Optimizer : view multiple scene graphs in independant windows

4. TFont and Text orientation...

5. I encountered problems with storing vertices of the scene graph into an array

6. WANTED: PageMaker 5.0 [Win]

7. Scene Graph GRAPH NODE viewer?

8. New at psp7

9. Printing an OpenGL scene under Windows

10. Delta Graph Pro 3.5 postscript printing problems

11. 3D Studio MAX 2 - Windows 95 resources problem...

12. GLUT scene/window resizing problem