ホームページ >バックエンド開発 >Golang >Go の OpenGL で三角形がレンダリングされないのはなぜですか?

Go の OpenGL で三角形がレンダリングされないのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-25 17:20:02407ブラウズ

Why is My Triangle Not Rendering in OpenGL with Go?

OpenGL 頂点バッファーが Go でレンダリングに失敗する

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。