OpenGL printing...
David Little -- dlittle@communique.net Friday, August 30, 1996 Environment: Win95, OpenGL, VC4.1, PowerStation4.0 I am drawing a plot using OpenGL in a CSplitterWnd. In one of the windows, I have some text info that relates to the plot, then a window with some controls, and a window with the plot itself. Everything works perfectly, except I can't get the plot to print. I have an example that plots to a bitmap, then BitBlt's it to a printer DC, but can't seem to get this to work. I found an example (GLPRT) at FTP.MICROSOFT.COM, but it only works with NT4.0, and that isn't my target system. Help! David
Roger Onslow -- Roger_Onslow@compsys.com.au Monday, September 02, 1996 David, >I am drawing a plot using OpenGL in a CSplitterWnd. In one of the >windows, I have some text info that relates to the plot, then a window >with some controls, and a window with the plot itself. Everything works >perfectly, except I can't get the plot to print. I have an example that >plots to a bitmap, then BitBlt's it to a printer DC, but can't seem to >get this to work. I found an example (GLPRT) at FTP.MICROSOFT.COM, but >it only works with NT4.0, and that isn't my target system. > >Help! We are doing exactly the same thing. Yes, you have to setup your OpenGL rendering context to output to a bitmap (which you would probably create in your OnSize function and keep around until the size changes again). The in your OnDraw, BitBlt from the bitmap to the screen. Best to use a separate function to actually render the 3D image to the bitmap, otherwise it will regenerate on every call to OnDraw (not nice if all you are doing is moving a dialog over it, say). Then for printing, you do the same things as OnDraw -- just bitblt to printer DC rather than screen DC -- shouldn't need to shange any code to do this. In my implementation, I create a 24bit DIB for rendering into so I always get maximum colour usage and then let the blt to screen and printer do the mapping to the appropriate palette (halftone is useful here, perhaps). Hope this helps you. I may be able to send some code if you really get stuck Roger Onslow
| Вернуться в корень Архива |