在屏幕外使用OpenGL绘图

时间:2014-03-16 18:09:07

标签: python opengl pygame pixels

有没有办法使用OpenGL绘制屏幕外?我想做的是:我希望能够使用像glVertex这样的函数,并将结果放在2D像素阵列中。

我正在使用Python。我尝试过使用PyGame,但效果并不好。 PyGame的问题是使用窗口事件,虽然我不需要它。另外,我必须绘制到场景+翻转屏幕两次才能使用glReadPixels访问屏幕像素。 另一个问题是我不能同时拥有一个窗口。

有没有正确的方法来完成我想要做的事情?

1 个答案:

答案 0 :(得分:2)

你要求的似乎是两件事在一起...你想要一个屏幕外缓冲区(FBO),你想要在客户端内存中获取帧缓冲区的内容。

您能指出您要定位的GL版本吗?

如果您的目标是OpenGL 3.0+,那么您可以使用FBO(帧缓冲对象)和PBO(像素缓冲区对象)来有效地执行此操作。但是,由于您使用的是glVertex,我认为您不必为效率而烦恼。我会专注于学习暂时使用Framebuffer Objects。

如果您没有使用GL3, 可能 可以访问旧的EXT FBO扩展程序,但即使您没有,也可能需要PBuffer。

请注意,PBuffers和像素缓冲区对象是两个不同的东西,即使它们听起来相同。在GL3 / FBO之前,WGL,GLX等具有特殊的平台特定功能,称为Pixel Buffers,用于在屏幕外绘制。