我有一个实时OpenGL应用程序,渲染一些带有纹理的对象。我已经构建了一个函数,通过PFD_DRAW_TO_BITMAP将渲染的场景渲染到DIB并将其复制到图像中,从而生成渲染场景的内部屏幕截图。除了一种纹理之外,它工作得很好。这些是24bpp的JPG(所以每R、G、B有8位)。我可以加载它们,它们可以实时正确地渲染,但不是渲染到DIB时。对于其他纹理,它工作得很好。在虚拟机上测试我的应用程序时,我也有相同的行为(WinXP,没有硬件加速!)。在这里,这些特定的纹理甚至不会在实时渲染中显示。没有硬件加速,我猜WinXP使用自己的OpenGL软件实现,并退回到OpenGL 1.1。那么,有没有哪种纹理不能在没有3d硬件加速的情况下绘制呢?还是有一个常见的陷阱?
发布于 2013-04-30 00:27:44
PFD_DRAW_TO_BITMAP总是会让你进入备用的OpenGL-1.1软件光栅化器。所以你不应该使用它。创建一个屏幕外的FBO,渲染到该FBO,使用glReadPixels检索像素数据,并使用图像文件I/O库将其写入文件。
https://stackoverflow.com/questions/16283540
复制相似问题