0

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

4

1 回答 1

5

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

于 2013-04-29T16:27:43.867 回答