Frage

Ich versuche, die Picking mit Pyglets OpenGL -Wrapper zu implementieren, aber ich habe Probleme, a zu konvertieren C Tutorial nach Python. Speziell der Teil unten.

#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();
}

Ich bin mir nicht sicher, wie ich Arrays von Gluint oder Glint deklarieren soll, so dass Glelectbuffer und Glpickmatrix funktionieren. Weiß jemand, wie man das in Python mit Pyglet macht? Vielen Dank.

War es hilfreich?

Lösung

Ich habe Ihr spezielles Beispiel nicht ausprobiert, aber der normale Weg, um Arrays zu deklarieren CTypes -Dokumentation. Im Wesentlichen würden Sie einen Array -Typ wie diesen erstellen:

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

Andere Tipps

Ich hatte viel Glück mit Pyopengl.

http://pyopengl.sourceforge.net/

Es ist ziemlich einfach, und ich glaube, es wäre einfacher, ein C -Tutorial zu verwenden.

Genau was für ein Problem haben Sie? Die OpenGL-Implementierung von Pyglets ist eine dünne Wrapper über der DLL und kartiert so ziemlich das C-Aufruf des C-Aufrufs für eins. Es ist schwer vorstellbar, dass es eine andere Bibliothek geben würde, die besser in Bezug auf ein C -Tutorial sein könnte.

Zum Beispiel, Diese Einführung ist ziemlich identisch mit dem C -Äquivalent, wenn es um die OpenGL -Anrufe geht:

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()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top