python - pyopengl帧缓冲

标签 python framebuffer pyopengl

我正在尝试在 PyOpenGL 中使用帧缓冲区对象,并找到了一些自学教程。我正在使用 Python 2.7.3 的 WinXP 机器上工作,我刚刚安装了 PyOpenGL 3.0.2 和 PyOpenGL-accelerate 3.0.2 的二进制发行版。然而,一开始我就遇到了一个问题,因为我收到了 fbo 函数似乎不存在的错误消息。这些是重现我的问题的步骤:

导入模块:

from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GL.framebufferobjects import *

我现在应该可以使用帧缓冲区对象/函数了。

print glGenFramebuffers
print glBindFramebuffer

显示

<OpenGL.extensions.glGenFramebuffers object at 0x03172260>
<OpenGL.extensions.glBindFramebuffer object at 0x03172120>

但是,如果我按照教程中的说明尝试调用(创建一个实例)该对象,方法是:

fbo = glGenFramebuffers(1)
glBindFramebuffer(GL_FRAMEBUFFER, fbo )

我得到错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "latebind.pyx", line 31, in OpenGL_accelerate.latebind.LateBind.__call__ (src\latebind.c:645)
  File "C:\Python27\lib\site-packages\OpenGL\extensions.py", line 189, in finalise
    self.__name__,
OpenGL.error.NullFunctionError: Attempt to call an undefined alternate function (glGenFramebuffers, glGenFramebuffersEXT), check for bool(glGenFramebuffers) before calling

使用

bool(glGenFramebuffers)

确实返回 False。

我做错了什么?难道不应该将所有必需的帧缓冲库与 PyOpenGL(-accelerate) 的二进制文件一起安装吗?

提前感谢任何可以帮助我的人。

编辑:我刚找到 https://stackoverflow.com/questions/12953134/problems-with-frame-buffer-objects-fbos-in-pyopengl ,有类似的问题,但没有解决方案

最佳答案

显然,如果您从文件中运行上面的代码,则不会显示此行为和功能。我在控制台中尝试了上面的命令,然后

bool(glGenFramebuffers)

返回错误

从文件运行时,它返回 True,一切正常。 此外,您似乎不需要包括

from OpenGL.GL.framebufferobjects import *

在较新版本的 PyOpenGL (>= 3.0.2) 中,您也可以在没有它的情况下访问帧缓冲区对象

关于python - pyopengl帧缓冲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13396170/

相关文章:

python - 当尝试设置运行计划时,类立即调用方法。函数没有发生

javascript - JavaScript 中的 Python dir() 等价物?

linux - 如何使用QT在树莓派的LCD和HDMI上同时在Linux中绘制图像?

linux - 如何将 X11 中的帧捕获到文件中?

python - 轨迹球转动不正确

python - 循环修改 OpenGL 小部件的按键输入

python - 最大值的二元向量

python - 如何为 python kivy 绘画应用程序添加一个清除按钮

opengl - 使用 GLSL 帧缓冲区渲染时出错

python - 在 OpenGL 中在 3D 模型后面绘制背景视频