We have just finished to develop a RenderToBitmap function that allow a poster sized bitmap to be created by tiling many images obtained from glReadPixel & gluPickMatrix.
Everything works fine BUT a customer is reporting the following issue:
Using standard Windows Print Preview dialog he sees the correct Print Preview on the right monitor while a messed up Print Preview on the left one. Messed up in the sense that all the tiles display a part of the currently displayed OpenGL scene overlapped with the correct one.
Dragging back and forth the Print Preview from one screen to the other you get the correct / wrong Print Preview.
WHY ?!?!? :eek:
The graphics card is a: NVIDIA Quadro FX 550 dual monitor
Sorry if I answered only now but I didn’t get any email notification. I need to check my options.
Humus, unfortuantely we customer is not happy to share his screenshots.
I am asking him to make a new test. After thinking about how we proepare the print preview, basically we generate a big bitmap and use standard GDI calls to paint a printDocument. In my opinion OpenGL here have nothing to do with the issue. I asked the customer to try painting a portrait picture - this is a bitmap like the one we generate with OpenGL - and see if dragging the preview window from one screen to the other the problem still exists or not.
The first image is relative to: Print Preview when the main program window is in the center of monitor 1 (left monitor)
The second image is relative to: Print Preview when the main program window is maximized in the monitor 1 (left monitor)
The third image is relative to: Print Preview when the main program window is in the monitor 2 (right monitor). The image is the same for maximized or floating window.
If you think OpenGL has nothing to do with it, (possible driver bugs aside => always update the graphics driver) the problem could be in the way you read or handle the GDI bitmap.
If the GDI image you generate contains more errors the more you move it off the screen where it works correctly, there could be a bitmap stride error or somesuch (=> more corrupted and smaller tiles.)
Check if there is any code which is not window relative. (I’m thinking about negative desktop offsets for the left dual-screen monitor if the right-hand one is the primary.)
Does it help to make the primary monitor the left one?
Is there OpenGL acceleration on both monitors?
The dual-screen options on NVIDIA drivers offer multiple modes. The default would be to accelerate both, bot you could also swich that to accelerate only the primary, in that cas you would get no OpenGL rendering on the secondary and readpixels on that area would return garbage.