2

私は 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を見つけましたが、同様の問題がありますが、解決策はありません

4

1 に答える 1

1

上記のコードは、ファイルから実行すると、この動作と機能を示さないようです。コンソールで上記のコマンドを試した後、

bool(glGenFramebuffers)

False を返します

ファイルから実行すると、True が返され、すべて正常に機能します。さらに、含める必要はないようです

from OpenGL.GL.framebufferobjects import *

PyOpenGL の新しいバージョン (>= 3.0.2) では、それがなくても Framebuffer オブジェクトにアクセスできるためです。

于 2012-11-15T14:04:45.620 に答える