So codieren Sie OpenGl in Visual Studio (Teil 2)

Grundlagen zeichnen

Methoden zum Zeichnen von Objekten in opengl

  • Sofortmodus
  • Beibehaltener Modus
  • Fortgeschrittener Modus

Das Zeichnen jedes Objekts in OpenGL erfolgt durch Definieren einiger Punkte und Verbinden dieser basierend auf Ihrer Verwendung. Sie können Polygone, Linien, Dreiecke usw. erstellen.

Überprüfen Sie unten, was Sie mit nur Punkten in opengl tun können.

Hinweis: Der folgende Code ist pseudo, die tatsächlichen Codes befinden sich im Abschnitt Zeichnungspunkte in diesem Artikel.

1. Sofortmodus

Bei dieser Methode machen wir nur Punkte und weisen die GPU an, sie auf dem Bildschirm anzuzeigen. Hier ist der Pseudocode dieser Methode.

für i = 1: n {mache einen zufälligen Punkt; Zeigen Sie den Punkt auf dem Bildschirm an. }}

Wie Sie sehen können, speichern wir im obigen Code keine Daten (Punkte).

2. Beibehaltener Modus

Diese Methode ähnelt der ersten Methode, aber im Gegensatz zur vorherigen Methode speichern wir unsere Daten (Punkte) in einigen Arrays oder Variablen und übergeben das Array oder die Listen an die GPU.

Punkteliste für i = 1 erstellen: n {points [i] = zufälligen Punkt erstellen; } drawallPoints ();

3. Erweiterter Modus

Im Gegensatz zu früheren Methoden in dieser Methode bereiten Sie Punkte vor und senden sie dann zur schnelleren Verarbeitung an die GPU. Sie ermöglichen Ihrer GPU, die gewünschten Aktionen auszuführen, anstatt die CPU anzuweisen, diese auszuführen. Dies wird in späteren Artikeln erläutert. In diesem Artikel werden wir wird den sofortigen und beibehaltenen Modus besprechen.

Punkteliste für i = 1 erstellen: n {points [i] = zufälligen Punkt erstellen; } sende alle Punkte an gpu und nehme bei Bedarf einige Änderungen vor. Drawallpoints ();

Punkte ziehen

In diesem Beitrag werden wir einige Punkte von opengl zeichnen. Zuerst müssen wir ein Projekt in Visual Studio erstellen und dann die erste Initialisierung der Glut-Bibliothek durchführen. Wenn Sie vergessen haben, wie sie initialisiert werden sollen, lesen Sie den ersten Teil.

Jetzt ist es Zeit, unseren ersten Blick auf den folgenden Code und das Ergebnis zu werfen.

Aber lassen Sie mich zuerst einige Anmerkungen machen. Wenn Sie etwas auf dem Bildschirm anzeigen möchten, müssen Sie die Rückruffunktion einstellen, die für die Verarbeitung Ihrer Ansichten verantwortlich ist. Ich meine, wenn Sie etwas auf dem Bildschirm anzeigen möchten, müssen Sie dies im Rückruf tun Und natürlich müssen Sie glutMainloop () aufrufen; Um dies zu verarbeiten, wird kein Rückruf ausgelöst. Die Anzeigefunktion wird im ersten Teil des Lernprogramms erstellt.

Nun der Code

Zuerst ändern wir die Farbe des Bildschirms, wie im obigen Teil erwähnt. Alle grafischen Arbeiten werden in der Anzeige-Rückruffunktion ausgeführt. Daher fügen wir den Code zum Ändern der Farbe in die Anzeige-Rückruffunktion ein:

glClearColor (1, 0, 0, 1); glClear (GL_COLOR_BUFFER_BIT); glFlush ();

Die erste Codezeile ändert die Farbe des Bildschirms in Rot und die zweite Zeile löscht den Puffer, der für die nächste Verwendung leer ist. Dies ist besser, aber wenn Sie dies nicht tun, gibt es kein Problem und das Programm wird ausgeführt In der letzten Zeile leeren wir den Datenpuffer auf

Wie Sie an glclearColor (1,0,0,1) sehen können; Wir ändern die Farbe des Bildschirms in Rot. Nun fügen wir dem Bildschirm einige Punkte hinzu. Um dem Bildschirm wieder Punkte hinzuzufügen, schreiben wir den Code in den Rückruf der Anzeigefunktion.

HINWEIS: Alle Koordinaten sollten im Bereich von [-1,1] liegen. Überprüfen Sie diesen Link auf Grund.

glClearColor (1, 0, 0, 1); glClear (GL_COLOR_BUFFER_BIT); glBegin (GL_POINTS); glVertex2d (0,0, 0,0); glVertex2d (0,5, 0,0); glVertex2d (0,5, 0,5); glVertex2d (0,0, 0,5); glEnd (); glFlush ();

Zuerst ändern wir die Farbe in Rot und dann beginnen wir mit dem Zeichnen von Punkten. Zuerst geben wir an, dass wir Punkte oder Polygone oder Dreiecke zeichnen möchten. Versuchen Sie, GL_POINTS in GL_POLYGON zu ändern und sehen Sie das Ergebnis. Dies ist mein Ergebnis

Die erwähnte Methode war sofort verfügbar. Schauen wir uns nun die beibehaltene Methode an. Bei dieser Methode können wir zuerst Punkte vorbereiten und sie dann zum Zeichnen an die GPU senden.

HINWEIS: Bevor wir mit dem nächsten Teil fortfahren, können wir Klassen definieren, die x, y oder x, y, z enthalten, oder wir können 2d- oder 3d-Arrays definieren und sie mit glVertex2dv () an opengl übergeben. die die Adresse eines Zeigers des Arrays erhalten.

`` `float vert [4] [2] = {{0.0,0,0}, {0,5,0,0}, {0,5,0,5}, {0,0,0,5},}; glBegin (GL_POLYGON); glVertex2fv (vert [0]); glVertex2fv (vert [1]); glVertex2fv (vert [2]); glVertex2fv (vert [3]); glEnd (); `` `

Sie können den obigen Code durch den vorherigen ersetzen. Das Ergebnis ist dasselbe. Sie können auch die Farbe von Punkten durch oder das Polygon ändern, indem Sie glColor3f (R, G, B) hinzufügen. .

Alle oben genannten Codes werden von der Glut-Bibliothek ausgeführt, was bedeutet, dass wir die CPU anweisen, die GPU zum Zeichnen aufzurufen. In den nächsten Artikeln werden wir die GPU direkt anweisen, Punkte zu ziehen.

Haben Sie einen guten Tag.