"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi mon triangle OpenGL ne s’affiche-t-il pas dans Go ? Enquête sur un problème de tampon de sommet.

Pourquoi mon triangle OpenGL ne s’affiche-t-il pas dans Go ? Enquête sur un problème de tampon de sommet.

Publié le 2024-11-06
Parcourir:704

Why is My OpenGL Triangle Not Rendering in Go? Investigating a Vertex Buffer Issue.

Problème de tampon de sommet OpenGL dans Go

Lors d'une tentative d'affichage d'un triangle à l'aide d'OpenGL dans Go, un utilisateur a rencontré un problème où le sommet le tampon n'a pas réussi à restituer la forme. Le code Go est dérivé d'un didacticiel, mais contrairement à son homologue C, il n'a produit aucun résultat.

Cause du problème

La cause première du problème réside dans les arguments passés à vertexAttrib.AttribPointer(). Plus précisément, l'utilisateur avait incorrectement spécifié (void*)0 comme décalage du tampon du tableau. Cela a empêché l'application de trouver les données de sommet.

Solution

Pour résoudre le problème, l'utilisateur est passé à la branche de travail des liaisons banthar et a effectué la ajustements suivants :

  • Arguments AttribPointer : L'appel de vertexAttrib.AttribPointer() a été mis à jour pour utiliser nil pour le décalage du tampon du tableau et gl.FLOAT pour le type de données :
vertexAttrib.AttribPointer(
    3,     // size
    gl.FLOAT, //type
    false, // normalized?
    0,     // stride
    nil) // array buffer offset
  • BufferData length : La longueur passée à gl.BufferData() a été modifiée pour spécifier la taille en octets, plutôt que le nombre d'éléments :
data := []float32{0, 1, 0, -1, -1, 0, 1, -1, 0}
[...]
gl.BufferData(gl.ARRAY_BUFFER, len(data)*4, data, gl.STATIC_DRAW)
[...]

Notes supplémentaires

  • Il existe peut-être un moyen plus efficace de transmettre la longueur correcte à BufferData.
  • Le L'appel glGetError n'a renvoyé aucune erreur, indiquant que le problème provenait de valeurs d'argument incorrectes.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3