2012-11-15 5 views
2

저는 PyOpenGL에서 프레임 버퍼 객체로 작업하려고하고 있으며 자신을 가르치기위한 튜토리얼을 발견했습니다. Python 2.7.3을 사용하는 WinXP 시스템에서 작업하고 PyOpenGL 3.0.2 및 PyOpenGL-accelerate 3.0.2의 바이너리 배포판을 설치했습니다. 그러나 처음에는 문제가 발생한다는 의미에서 fbo 함수가 존재하지 않는다는 오류 메시지가 나타납니다. 모듈을 가져 오기pyopengl 프레임 버퍼

:

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

지금 나에게 사용할 수있는 프레임 버퍼 오브젝트/기능을 가지고 있어야이 내 문제를 재현하는 단계입니다.

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

내가 오류를 얻을 :

print glGenFramebuffers 
print glBindFramebuffer 

내가 전화를 시도하는 경우에, 튜토리얼에 명시된 바와 같이,이 오브젝트의 (인스턴스을), 그러나

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

을 보여줍니다 :

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) 

참으로 거짓을 반환합니다.

내가 뭘 잘못하고 있니? 모든 필요한 프레임 버퍼 라이브러리가 PyOpenGL (-accelerate) 바이너리와 함께 설치되어서는 안됩니까?

나를 도울 수있는 사람에게 미리 감사드립니다.

편집 : 난 그냥 비슷한 문제로, https://stackoverflow.com/questions/12953134/problems-with-frame-buffer-objects-fbos-in-pyopengl을 찾았지만, 당신이 파일을 실행하면 해결책

+1

당신이 튜토리얼 링크를 수없이 프레임 버퍼 객체에 당신은 또한 액세스 권한을 갖는 PyOpenGL의 최신 버전에서

from OpenGL.GL.framebufferobjects import * 

(> = 3.0.2)를 포함 할 필요하지 않는 것 ? – Aesthete

+1

http://pyopengl.sourceforge.net/context/tutorials/shadow_2.xhtml 또는 http://www.opengl.org/wiki/Framebuffer_Object_Examples#Quick_example.2C_render_to_texture_.282D.29 또는 HTTP : //bazaar.launchpad.net/~mcfletch/openglcontext/trunk/view/head : /tests/shadow_2.py –

답변

1

은 분명히 위의 코드는 잘 동작과 기능을 표시하지 않습니다. 그것은 True를 반환하고 일반적으로 모든 기능 파일에서 실행하면 나는

거짓 위 콘솔의 명령 다음

bool(glGenFramebuffers) 

수익을 시도했다. 또한 , 당신은

+0

이유는 아마도 OpenGL 컨텍스트를 만들어야하기 때문입니다 (즉, OpenGL 창을 열고 glut main loop)를 사용하여 FrameBuffer 객체를 처리 할 수 ​​있습니다. 나는 그걸 여러 번 잡았어. – Nathaniel