在尝试使用 Go 中演示 OpenGL 平台上基本三角形实现的教程时,用户遇到了以下问题有效渲染三角形的困难。尽管成功打开窗口并建立了蓝色背景,但三角形仍然不可见。
将 Go 代码与教程的工作 C 版本进行比较,很明显,vertexAttrib.AttribPointer 的使用存在差异功能。在 C 版本中,提供 (void*)0 参数作为数组缓冲区偏移量,而在 Go 实现中,nil 或 &gVertexBufferData[0] 都被证明是不成功的。
进一步检查表明调用 glGetError不会产生任何错误,表明根本问题是配置错误而不是运行时错误。
问题在于传递给 vertexAttrib.AttribPointer 函数的参数。 Go 实现的正确语法是:
<code class="go">vertexAttrib.AttribPointer( 3, // size gl.FLOAT, // type false, // normalized? 0, // stride nil) // array buffer offset</code>
此外,传递给 gl.BufferData 函数的大小应以字节为单位指定,而不是元素的数量:
<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>
通过合并这些调整,可以在 Go 中使用 OpenGL 成功渲染三角形,从而允许用户继续进一步的开发任务。
以上是为什么我的三角形无法使用 Go 在 OpenGL 中渲染?的详细内容。更多信息请关注PHP中文网其他相关文章!