ホームページ  >  記事  >  バックエンド開発  >  ウィンドウと背景のセットアップが成功したにもかかわらず、go-gl/glfw および github.com/banthar/gl を使用して三角形を表示できないのはなぜですか?

ウィンドウと背景のセットアップが成功したにもかかわらず、go-gl/glfw および github.com/banthar/gl を使用して三角形を表示できないのはなぜですか?

DDD
DDDオリジナル
2024-11-01 18:13:02322ブラウズ

Why Can't I Display a Triangle Using go-gl/glfw and github.com/banthar/gl Despite Successful Window and Background Setup?

Go での頂点バッファーと三角形の表示

質問:

Go github.com/banthar/gl パッケージの使用http://www.opengl-tutorial.org/beginners-tutorials/tutorial-2-the-first-triangle/ のチュートリアル コードは、ウィンドウの作成と背景色の設定に成功しましたが、三角形の表示に失敗しました。同等の C コードでは三角形が表示されます。なぜですか?

答え:

エラーは、AttribPointer 関数に渡された引数が正しくないことが原因である可能性があります。この問題を解決するために次の調整が確認されました:

  • AttribPointer 引数: (void*)0 の代わりに配列バッファー オフセットに nil を渡します。これは、現在のバッファ バインディングを頂点属性の開始点として使用するように OpenGL ライブラリに指示します。
  • BufferData Size: 頂点バッファのサイズを要素数ではなくバイト単位で指定します。 。たとえば、頂点バッファーに n 個の 32 ビット浮動小数点値が含まれる場合、4 * n を BufferData に渡します。

修正された Go コード:

package main

import (
    "github.com/banthar/gl"
    "github.com/go-gl/glfw/v3.2/glfw"
    "log"
)

func main() {
    // ... ( GLFW window setup, GL initialization code) ...

    // Create vertex buffer
    gVertexBufferData := []float32{-1.0, -1.0, 0.0, 1.0, -1.0, 0.0, 0.0, 1.0, 0.0}
    vertexBuffer := gl.GenBuffer()
    vertexBuffer.Bind(gl.ARRAY_BUFFER)
    gl.BufferData(gl.ARRAY_BUFFER, len(gVertexBufferData)*4, gVertexBufferData, gl.STATIC_DRAW)

    for {
        // ... (Clear screen, enable/disable vertex attrib, draw triangle) ...
        vertexAttrib.AttribPointer(
            3,     // Size
            gl.FLOAT, // Type
            false, // Normalized?
            0,     // Stride
            nil)   // Array buffer offset

        // ... (Continue drawing loop) ...
    }
}

以上がウィンドウと背景のセットアップが成功したにもかかわらず、go-gl/glfw および github.com/banthar/gl を使用して三角形を表示できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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