」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼我的 OpenGL 三角形無法在 Go 中渲染?調查頂點緩衝區問題。

為什麼我的 OpenGL 三角形無法在 Go 中渲染?調查頂點緩衝區問題。

發佈於2024-11-06
瀏覽:862

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 綁定的工作分支並進行以下調整:
vertexAttrib.AttribPointer(
    3,     // size
    gl.FLOAT, //type
    false, // normalized?
    0,     // stride
    nil) // array buffer offset
  • vertexAttrib.AttribPoint&er(AttribPointer(AttribPoint)er( 3, // 大小 gl.FLOAT, //型 false, // 標準化? 0, // 步幅 nil) // 陣列緩衝區偏移
data := []float32{0, 1, 0, -1, -1, 0, 1, -1, 0}
[...]
gl.BufferData(gl.ARRAY_BUFFER, len(data)*4, data, gl.STATIC_DRAW)
[...]

資料:= []float32{0, 1, 0, -1, -1, 0, 1, -1, 0} [...] gl.BufferData(gl.ARRAY_BUFFER, len(資料)*4, 資料, gl.STATIC_DRAW) [...]

  • 附加說明
可能有更有效的方法將正確的長度傳遞給 BufferData。

Why is My OpenGL Triangle Not Rendering in Go? Investigating a Vertex Buffer Issue. 
glGetError 呼叫沒有回傳任何錯誤,表示問題源自於不正確的參數值。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3