我有一个实时OpenGL应用程序渲染一些带纹理的对象。我已经构建了一个函数来通过PFD_DRAW_TO_BITMAP将它渲染到DIB并将其复制到图像来制作渲染场景的内部屏幕截图。除了一种纹理外,它的效果非常好。这些是具有24bpp的JPG(因此每个R,G,B为8位)。我可以加载它们并实时正确渲染,但不能渲染到DIB。对于其他纹理,效果很好。 在虚拟机上测试我的应用程序时,我有相同的行为(WinXP,没有硬件加速!)。这些特定的纹理甚至没有在实时渲染中显示。如果没有硬件加速,我猜WinXP使用自己的OpenGL软件实现,并回归到OpenGL 1.1。 那么有没有3D硬件加速不能绘制的纹理?还是有一个常见的陷阱?
答案 0 :(得分:5)
PFD_DRAW_TO_BITMAP将始终让您进入后备OpenGL-1.1软件光栅化器。所以你不应该使用它。创建一个离屏FBO,渲染到该,使用 glReadPixels 检索像素数据,并使用图像文件I / O库将其写入文件。