Warum kann ich trotz erfolgreicher Fenster- und Hintergrundeinrichtung kein Dreieck mit go-gl/glfw und github.com/banthar/gl anzeigen?

DDD
Freigeben: 2024-11-01 18:13:02
Original
321 Leute haben es durchsucht

Why Can't I Display a Triangle Using go-gl/glfw and github.com/banthar/gl Despite Successful Window and Background Setup?

Scheitelpunktpuffer und Anzeige von Dreiecken in Go

Frage:

Verwendung des Go-Pakets github.com/banthar/gl , der Tutorial-Code von http://www.opengl-tutorial.org/beginners-tutorials/tutorial-2-the-first-triangle/ erstellt erfolgreich ein Fenster und legt die Hintergrundfarbe fest, zeigt jedoch kein Dreieck an. Der entsprechende C-Code zeigt das Dreieck an. Warum?

Antwort:

Die Fehler können auf falsche Argumente zurückzuführen sein, die an die AttribPointer-Funktion übergeben wurden. Die folgenden Anpassungen wurden identifiziert, um das Problem zu beheben:

  • AttribPointer-Argumente: Übergeben Sie Null für den Array-Puffer-Offset anstelle von (void*)0. Dadurch wird die OpenGL-Bibliothek angewiesen, die aktuelle Pufferbindung als Ausgangspunkt für das Vertex-Attribut zu verwenden.
  • BufferData Size: Geben Sie die Größe des Vertex-Puffers in Bytes anstelle der Anzahl der Elemente an . Wenn der Vertex-Puffer beispielsweise n 32-Bit-Gleitkommawerte enthält, übergeben Sie 4 * n an BufferData.

Korrigierter Go-Code:

package main

import (
    "github.com/banthar/gl"
    "github.com/go-gl/glfw/v3.2/glfw"
    "log"
)

func main() {
    // ... ( GLFW window setup, GL initialization code) ...

    // Create vertex buffer
    gVertexBufferData := []float32{-1.0, -1.0, 0.0, 1.0, -1.0, 0.0, 0.0, 1.0, 0.0}
    vertexBuffer := gl.GenBuffer()
    vertexBuffer.Bind(gl.ARRAY_BUFFER)
    gl.BufferData(gl.ARRAY_BUFFER, len(gVertexBufferData)*4, gVertexBufferData, gl.STATIC_DRAW)

    for {
        // ... (Clear screen, enable/disable vertex attrib, draw triangle) ...
        vertexAttrib.AttribPointer(
            3,     // Size
            gl.FLOAT, // Type
            false, // Normalized?
            0,     // Stride
            nil)   // Array buffer offset

        // ... (Continue drawing loop) ...
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum kann ich trotz erfolgreicher Fenster- und Hintergrundeinrichtung kein Dreieck mit go-gl/glfw und github.com/banthar/gl anzeigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!