Zum Hauptinhalt springen

Wie zeichne ich ein Quadrat in einer Python mit OpenGL

OpenGL - es ist eine Grafikbibliothek, die häufig zum Erstellen interaktiver Grafiken und zur Visualisierung auf verschiedenen Plattformen verwendet wird. Eines der Hauptelemente des Zeichnens in OpenGL ist das Quadrat - eine einfache, aber leistungsstarke geometrische Form.

Wenn Sie sich für Programmierung und Grafik interessieren, kann es eine interessante und visuelle Möglichkeit sein, ein Quadrat mit OpenGL zu zeichnen, um die Möglichkeiten dieser Bibliothek zu erkunden. Um dies zu tun, müssen Sie über grundlegende Python-Kenntnisse und ein Verständnis für die Arbeit mit grafischen Objekten verfügen.

In diesem Artikel werden wir uns eine schrittweise Anleitung ansehen, wie man ein Quadrat in einer Python mit OpenGL zeichnet. Wir beginnen damit, die Umgebung vorzubereiten und das Fenster zum Zeichnen anzupassen und dann schrittweise ein Quadrat auf dem Bildschirm zu erstellen und anzuzeigen. Es werden grundlegende Konzepte und Methoden zur Arbeit mit grafischen Objekten in OpenGL hervorgehoben, sodass Sie diese Schritte einfach wiederholen und Ihre eigenen Projekte erstellen können.

Anleitung zum Zeichnen eines Quadrats in einer Python mit OpenGL

  1. Importieren Sie die erforderlichen Module: from OpenGL.GL import * und from OpenGL.GLUT import * .
  2. Geben Sie die Funktion init() aus, die verschiedene OpenGL-Einstellungen festlegt.
  3. Geben Sie die Funktion drawSquare() aus, die für das Zeichnen des Quadrats verantwortlich ist.
  4. Erstellen Sie in der Funktion main() ein Fenster mit der Funktion glutCreateWindow() .
  5. Geben Sie die Funktionen zum Rendern und Aktualisieren des Bildschirms an: glutDisplayFunc() und glutMainLoop() .

Hier ist der vollständige Programmcode:

from OpenGL.GL import *from OpenGL.GLUT import *def init():glClearColor(0.0, 0.0, 0.0, 1.0)gluOrtho2D(-1.0, 1.0, -1.0, 1.0)def drawSquare():glClear(GL_COLOR_BUFFER_BIT)glColor3f(1.0, 1.0, 1.0)glBegin(GL_QUADS)glVertex2f(-0.5, -0.5)glVertex2f(-0.5, 0.5)glVertex2f(0.5, 0.5)glVertex2f(0.5, -0.5)glEnd()glFlush()def main():glutInit(sys.argv)glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)glutInitWindowSize(500, 500)glutInitWindowPosition(100, 100)glutCreateWindow("Квадрат с помощью OpenGL")glutDisplayFunc(drawSquare)init()glutMainLoop()if __name__ == '__main__':main()

Führen Sie das Programm aus und Sie sehen ein Quadrat, das mit der OpenGL-Bibliothek gezeichnet wurde. Sie können auch mit den Parametern der Funktion glVertex2f() experimentieren, um die Größe und Position des Quadrats zu ändern.

Vorbereiten zum Zeichnen eines Quadrats

pip install PyOpenGL

Nach der Installation von PyOpenGL müssen Sie mehrere Module aus dieser Bibliothek in Ihr Programm importieren. Im Folgenden finden Sie ein Beispiel für das Importieren der erforderlichen Module:

from OpenGL.GL import * from OpenGL.GLUT import *

Um ein Fenster und Benutzerfeedback zu erstellen, fügen Sie außerdem den Import des sys-Moduls hinzu:

Nachdem Sie die Module importiert haben, können Sie mit dem Erstellen eines Fensters beginnen und dessen Einstellungen konfigurieren. Dies geschieht mit Funktionen aus PyOpenGL.

Bevor wir mit dem Zeichnen beginnen, benötigen wir eine Funktion, die immer wieder aufgerufen wird, um das Fenster zu aktualisieren und darauf zu zeichnen. Nennen wir diese Funktion "draw". Verwenden Sie die Funktion glutDisplayFunc, um unsere Draw-Funktion als Anzeigefunktion festzulegen:

Damit unser Programm auch Feedback vom Benutzer erhält, fügen wir einen Aufruf der glutIdleFunc-Funktion hinzu, der unsere Anzeigefunktion angibt:

Jetzt sind wir bereit, mit OpenGL ein Quadrat zu zeichnen!

Installation der erforderlichen Werkzeuge

Bevor Sie mit OpenGL beginnen, ein Quadrat in einer Python zu zeichnen, müssen Sie mehrere Werkzeuge installieren. Hier ist eine Liste der erforderlichen Komponenten:

Python: Stellen Sie sicher, dass Sie die neueste Version von Python installiert haben. Sie können es von der offiziellen Python-Website herunterladen.

PyOpenGL: Dies ist eine Python-Bibliothek für die Arbeit mit OpenGL. Installieren Sie es mit dem pip-Paketmanager mit dem Befehl:

pip install PyOpenGL

Wenn bei der Installation Probleme auftreten, verwenden Sie den Befehl pip3 anstelle von pip.

OpenGL: Sie müssen auch das OpenGL-Paket installieren, um mit grafischen Funktionen zu arbeiten. Abhängig von Ihrem Betriebssystem kann die Installation von OpenGL variieren:

- Für Windows: Laden Sie die OpenGL-Treiber für Ihre Grafikkarte herunter und installieren Sie sie.

- Für macOS: OpenGL wird mit dem System geliefert, daher ist keine zusätzliche Installation erforderlich.

- Für Linux: Installieren Sie die Pakete mesa-common-dev und libglu1-mesa-dev mit dem Befehl:

sudo apt-get install mesa-common-dev libglu1-mesa-dev

Nachdem Sie alle erforderlichen Komponenten installiert haben, sind Sie bereit, mit OpenGL ein Quadrat in Python zu zeichnen!

Erstellen eines Zeichnungsfensters

Um ein Quadrat in Python mit der OpenGL-Bibliothek zu zeichnen, müssen Sie ein Fenster erstellen, in dem unsere Grafiken angezeigt werden.

Um ein Fenster zu erstellen, verwenden wir die Funktionen aus der OpenGL-Bibliothek:

glutInitFunktion zum Initialisieren des GLUT (OpenGL Utility Toolkit) und Erstellen eines Fensters.
glutInitDisplayModeFunktion zum Auswählen des Anzeigemodus des Fensters, einschließlich der Farbskala, der Puffer und anderer Optionen.
glutInitWindowSizeFunktion zum Einstellen der Fenstergrößen.
glutCreateWindowFunktion zum Erstellen eines Fensters mit einem bestimmten Namen.

Beispielcode zum Erstellen eines Fensters:

import OpenGL.GL as glimport OpenGL.GLUT as glutdef create_window():glut.glutInit()glut.glutInitDisplayMode(glut.GLUT_RGBA | glut.GLUT_DOUBLE | glut.GLUT_DEPTH)glut.glutInitWindowSize(800, 600)glut.glutCreateWindow("Квадрат в OpenGL")create_window()

In diesem Beispiel rufen wir die GLUT-Initialisierungsfunktionen auf, wählen den Anzeigemodus des Fensters aus und legen seine Größe fest. Verwenden Sie dann die Funktion glutCreateWindow erstellen Sie ein Fenster mit dem angegebenen Namen "Square in OpenGL".

Jetzt sind wir bereit, unser Quadrat zu zeichnen!

Ein Quadrat zeichnen

Um ein Quadrat in einer Python mit OpenGL zu zeichnen, müssen Sie die PyOpenGL-Bibliothek verwenden. Bevor Sie beginnen, müssen Sie diese Bibliothek mit dem pip-Paketinstallationsprogramm installieren.

Nach der Installation von PyOpenGL können Sie mit dem Erstellen eines Fensters und der Initialisierung von OpenGL beginnen:

import OpenGL.GL as glimport OpenGL.GLUT as glutdef draw_square():gl.glBegin(gl.GL_QUADS)gl.glColor3f(1.0, 1.0, 1.0) # устанавливаем цвет квадратаgl.glVertex2f(-0.5, -0.5) # задаем координаты вершинgl.glVertex2f(0.5, -0.5)gl.glVertex2f(0.5, 0.5)gl.glVertex2f(-0.5, 0.5)gl.glEnd()def render():gl.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT)gl.glLoadIdentity()draw_square()gl.glFlush()def main():glut.glutInit() # инициализация GLUTglut.glutInitWindowSize(800, 800) # задание размеров окнаglut.glutCreateWindow("Square") # создание окна с заданным названиемglut.glutDisplayFunc(render) # установка функции отрисовкиgl.glClearColor(0.0, 0.0, 0.0, 0.0) # установка цвета очистки экранаglut.glutMainLoop() # запуск основного циклаif __name__ == "__main__":main()

Wenn Sie diesen Code ausführen, wird ein Fenster mit schwarzem Hintergrund erstellt, in dem ein weißes Quadrat gezeichnet wird. Beachten Sie, dass die Koordinaten der Eckpunkte des Quadrats innerhalb des Bereichs liegen müssen [-1, 1]. Sie können auch die Größe des Fensters und die Farbe des Quadrats ändern, indem Sie die entsprechenden Werte im Code festlegen.

Jetzt haben Sie den grundlegenden Code, um ein Quadrat mit OpenGL in Python zu zeichnen. Sie können mit verschiedenen Formen und Farben experimentieren, Animationen und Benutzerinteraktionen hinzufügen, indem Sie andere Funktionen und Funktionen der PyOpenGL-Bibliothek verwenden.

Festlegen der Farbe des Quadrats

Um die Farbe eines Quadrats in einer Python mithilfe der OpenGL-Bibliothek festzulegen, müssen Sie die glColor-Funktion verwenden. Mit dieser Funktion können Sie die Farbe im RGB-Format (Rot, Grün, Blau) festlegen.

Hier ist ein Beispiel für die Verwendung der glColor-Funktion, um die rote Farbe eines Quadrats festzulegen:

glColor(1, 0, 0)

In diesem Beispiel entspricht der Wert 1 der maximalen Intensität für Rot, während der Wert 0 für Grün und Blau anzeigt, dass die entsprechende Farbintensität nicht vorhanden ist. Auf diese Weise wird das Quadrat in Rot angezeigt.

Auf ähnliche Weise können Sie die Farbe eines Quadrats jeder anderen Farbe festlegen. Dazu müssen Sie die entsprechenden RGB-Werte in der glColor-Funktion angeben. Um beispielsweise Grün festzulegen, können Sie den folgenden Code verwenden:

glColor(0, 1, 0)

Auf diese Weise wird das Quadrat beim Ausführen dieses Codes grün angezeigt.

Hinzufügen von Quadratbewegungen

Jetzt, da wir gelernt haben, ein Quadrat mit OpenGL zu zeichnen, fügen wir unserem Quadrat eine Bewegung hinzu. Um dies zu tun, werden wir die Koordinaten des Quadrats in jedem Frame der Animation ändern.

  • Erstellen Sie zu Beginn des Programms die Variablen x und y , die die aktuellen Koordinaten des Quadrats darstellen. Setzen Sie ihre Werte auf 0.
  • Fügen Sie in der Draw-Funktion die folgenden Codezeilen hinzu, bevor Sie die glBegin-Funktion(GL_QUADS) aufrufen:
    • x += 0.01 - Erhöht den Wert der Variablen x bei jedem Frame der Animation um 0.01, wodurch ein nach rechts bewegter Effekt entsteht.
    • y += 0.01 - Erhöht den Wert der Variablen y bei jedem Frame der Animation um 0.01, wodurch ein Aufwärtsbewegungseffekt entsteht.
    • x1 = -0.5 + x
    • y1 = -0.5 + y
    • x2 = 0.5 + x
    • y2 = -0.5 + y
    • x3 = 0.5 + x
    • y3 = 0.5 + y
    • x4 = -0.5 + x
    • y4 = 0.5 + y

    Jetzt wissen Sie, wie Sie einem Quadrat, das mit OpenGL in Python gezeichnet wird, Bewegung hinzufügen. Dies ist eine großartige Übung, um die Arbeit mit Koordinaten zu verstehen und sie in jedem Frame einer Animation zu aktualisieren.

    Beenden des Programms

    Nachdem Sie ein Quadrat in einem Fenster mit der OpenGL-Bibliothek gezeichnet haben, müssen Sie das Programm ordnungsgemäß beenden. Dazu wird der folgende Code verwendet:

    glfw.terminate() - diese Methode schließt alle Fenster und gibt die von der GLFW-Bibliothek belegten Ressourcen frei.

    sys.exit() - durch Aufrufen dieser Funktion wird das Programm ordnungsgemäß beendet und beendet.

    Die zum Beenden des Programms vorgesehenen Methoden müssen nach dem Hauptrenderingzyklus aufgerufen werden, damit sie am Ende des Programms ausgeführt werden.

    while not glfw.window_should_close(window):# отрисовка квадратаglfw.swap_buffers(window)glfw.poll_events()glfw.terminate()sys.exit()

    Daher sind wir zuversichtlich, das Fenster ordnungsgemäß zu schließen und Ressourcen freizugeben, nachdem das Programm beendet wurde.