2009-08-17 7 views
2

PygletのOpenGLラッパーを使用してピッキングを実装しようとしていますが、C tutorialをPythonに変換する際に問題があります。特に以下の部分。OpenGL Picking with Pyglet

#define BUFSIZE 512 
GLuint selectBuf[BUFSIZE] 

void startPicking(int cursorX, int cursorY) { 
    GLint viewport[4]; 

    glSelectBuffer(BUFSIZE,selectBuf); 
    glRenderMode(GL_SELECT); 

    glMatrixMode(GL_PROJECTION); 
    glPushMatrix(); 
    glLoadIdentity(); 

    glGetIntegerv(GL_VIEWPORT,viewport); 
    gluPickMatrix(cursorX,viewport[3]-cursorY, 
      5,5,viewport); 
    gluPerspective(45,ratio,0.1,1000); 
    glMatrixMode(GL_MODELVIEW); 
    glInitNames(); 
}

私はGLuintの配列や閃光ようglSelectBufferやglPickMatrix仕事を宣言するオンにするかどうかはわかりません。 PygletでPythonでこれを行う方法を誰かが知っていますか?ありがとう。

答えて

5

私はあなたの特定の例を試していないが、配列を宣言するために通常の方法でですctypes documentation。基本的には、次のような配列タイプを作成します。

FourGLints = GLint * 4 
viewport = FourGLints(0, 1, 2, 3) 
+0

これはまさに私が必要としたものです。正しい方向に私を指してくれてありがとう。 – exupero

+0

問題はありません、サイトにようこそ:) – Kiv

1

私はPyOpenGLに恵まれました。

http://pyopengl.sourceforge.net/

それは非常に簡単だし、Cのチュートリアルを使用することで容易になるだろう、私は信じています。

1

あなたはどのような問題を抱えていますか? PygletのOpenGL実装は、DLL上の薄いラッパーであり、Cの呼び出しを一対一にマッピングします。 Cチュートリアルに従うという点では、他のライブラリがあるとは想像もつきません。それは、OpenGLに来るとき

例えば、this introductionはいつも同じCと同等にある呼び出します。

from pyglet.gl import * 

# Direct OpenGL commands to this window. 
window = pyglet.window.Window() 

@window.event 
def on_draw(): 
    glClear(GL_COLOR_BUFFER_BIT) 
    glLoadIdentity() 
    glBegin(GL_TRIANGLES) 
    glVertex2f(0, 0) 
    glVertex2f(window.width, 0) 
    glVertex2f(window.width, window.height) 
    glEnd() 

pyglet.app.run() 
関連する問題