DrawToBitmap(DIB)中未显示OpenGL Win32纹理

Mic*_*ble 0 opengl winapi dib

我有一个实时OpenGL应用程序渲染一些纹理对象.我已经构建了一个函数来通过PFD_DRAW_TO_BITMAP将它渲染到DIB并将其复制到图像来制作渲染场景的内部屏幕截图.除了一种纹理外,它的效果非常好.这些是具有24bpp的JPG(因此每个R,G,B为8位).我可以加载它们并实时正确渲染,但不能渲染到DIB.对于其他纹理,效果很好.在虚拟机上测试我的应用程序时,我有相同的行为(WinXP,没有硬件加速!).这些特定的纹理甚至没有在实时渲染中显示.如果没有硬件加速,我猜WinXP使用自己的OpenGL软件实现,并回归到OpenGL 1.1.那么有没有3D硬件加速不能绘制的纹理?还是有一个常见的陷阱?

dat*_*olf 5

PFD_DRAW_TO_BITMAP将始终让您进入后备OpenGL-1.1软件光栅化器.所以你不应该使用它.创建一个离屏FBO,渲染到它,使用glReadPixels检索像素数据,并使用图像文件I/O库将其写入文件.