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 中国語 Web サイトの他の関連記事を参照してください。