Maison  >  Article  >  développement back-end  >  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.

Patricia Arquette
Patricia Arquetteoriginal
2024-10-25 21:32:28238parcourir

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 tutoriel, 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é le 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 :
<code class="go">vertexAttrib.AttribPointer(
    3,     // size
    gl.FLOAT, //type
    false, // normalized?
    0,     // stride
    nil) // array buffer offset</code>
  • BufferData Longueur : 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 :
<code class="go">data := []float32{0, 1, 0, -1, -1, 0, 1, -1, 0}
[...]
gl.BufferData(gl.ARRAY_BUFFER, len(data)*4, data, gl.STATIC_DRAW)
[...]</code>

Notes supplémentaires

  • Il existe peut-être un moyen plus efficace de transmettre la longueur correcte à BufferData.
  • L'appel glGetError a fait ne renvoie aucune erreur, indiquant que le problème provenait de valeurs d'argument incorrectes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn