Maison >développement back-end >Golang >Pourquoi mon triangle ne s'affiche-t-il pas dans OpenGL avec Go ?
Dans le but d'utiliser un didacticiel démontrant l'implémentation d'un triangle de base sur la plate-forme OpenGL dans Go, les utilisateurs ont rencontré difficultés à rendre le triangle efficacement. Malgré l'ouverture réussie de la fenêtre et l'établissement d'un fond bleu, le triangle reste invisible.
En comparant le code Go à la version C de travail du didacticiel, il devient évident qu'il existe une divergence dans l'utilisation de vertexAttrib.AttribPointer. fonction. Dans la version C, un argument de (void*)0 est fourni comme décalage de tampon de tableau, tandis que dans l'implémentation Go, nil ou &gVertexBufferData[0] se sont tous deux révélés infructueux.
Un examen plus approfondi révèle que l'invocation de glGetError ne génère aucune erreur, ce qui suggère que le problème sous-jacent est une mauvaise configuration plutôt que des erreurs d'exécution.
Le problème réside dans les arguments transmis à la fonction vertexAttrib.AttribPointer. La syntaxe correcte pour l'implémentation Go est :
<code class="go">vertexAttrib.AttribPointer( 3, // size gl.FLOAT, // type false, // normalized? 0, // stride nil) // array buffer offset</code>
De plus, la taille transmise à la fonction gl.BufferData doit être spécifiée en octets plutôt qu'en 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>
En incorporant ces ajustements, le triangle peut être rendu avec succès à l'aide d'OpenGL dans Go, permettant aux utilisateurs de poursuivre leurs tâches de développement.
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!