使用OpenGL进行离屏绘制

0 投票
1 回答
655 浏览
提问于 2025-04-17 22:33

有没有办法用OpenGL在屏幕外绘图?我想做的是:我希望能使用像glVertex这样的函数,然后把结果放到一个二维的像素数组里。

我在用Python。我试过用PyGame,但效果不是很好。PyGame的问题是它会打开一个窗口,而我其实不需要这个窗口。此外,我必须先绘制场景,然后再翻转屏幕两次,才能用glReadPixels获取屏幕像素。

还有一个问题是,我不能同时打开多个窗口。

有没有什么合适的方法可以实现我想做的事情?

1 个回答

2

你问的问题好像包含了两个部分……你想要一个离屏缓冲区(FBO),同时还想把帧缓冲区的内容放到客户端的内存里。

你能告诉我你想用哪个版本的GL吗?

如果你使用的是OpenGL 3.0及以上版本,那么你可以使用FBO(帧缓冲对象)和PBO(像素缓冲对象)来高效地完成这个任务。不过,因为你在用glVertex,我觉得你不需要太担心效率的问题。现在可以先专注于学习如何使用帧缓冲对象。

如果你没有使用GL3,你可能可以使用旧的EXT FBO扩展,但如果没有这个,你可能还需要用到PBuffer。

需要注意的是,PBuffer和像素缓冲对象是两回事,虽然听起来很像。在GL3/FBO出现之前,WGL、GLX等有一种特定平台的功能叫做像素缓冲,用于离屏绘图。

撰写回答