首页  >  文章  >  后端开发  >  为什么我的 OpenGL 三角形无法在 Go 中渲染?调查顶点缓冲区问题。

为什么我的 OpenGL 三角形无法在 Go 中渲染?调查顶点缓冲区问题。

Patricia Arquette
Patricia Arquette原创
2024-10-25 21:32:28238浏览

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

Go 中的 OpenGL 顶点缓冲区问题

在尝试在 Go 中使用 OpenGL 显示三角形时,用户遇到了顶点缓冲区问题缓冲区无法渲染形状。 Go 代码源自教程,但与 C 代码不同的是,它没有产生任何输出。

问题原因

问题的根本原因位于传递给 vertexAttrib.AttribPointer() 的参数中。具体来说,用户错误地将 (void*)0 指定为数组缓冲区偏移量。这导致应用程序无法找到顶点数据。

解决方案

为了纠正问题,用户切换到 banthar 绑定的工作分支并进行以下调整:

  • AttribPointer 参数:vertexAttrib.AttribPointer() 调用已更新为使用 nil 作为数组缓冲区偏移量,使用 gl.FLOAT 作为数据类型:
<code class="go">vertexAttrib.AttribPointer(
    3,     // size
    gl.FLOAT, //type
    false, // normalized?
    0,     // stride
    nil) // array buffer offset</code>
  • BufferData Length:传递给 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>

附加说明

  • 可能有一种更有效的方法将正确的长度传递给 BufferData。
  • glGetError 调用确实不返回任何错误,表明问题源于不正确的参数值。

以上是为什么我的 OpenGL 三角形无法在 Go 中渲染?调查顶点缓冲区问题。的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn