0

コア OpenGL 4.3 バックエンドを使用して、C++14 で独自のゲーム エンジンを構築しています。

私は次のチュートリアルに従っています:

以下の本もフォローしています。

  • OpenGL SuperBible (第 6 版)
  • OpenGL 4 シェーディング言語クックブック (第 2 版)

これらの本はどちらも OpenGL 4.3 で動作しますが、learnopengl.com では OpenGL 3.3 を教えています。私は OpenGL 3.3 に従っており、他のリソースが新しい方法を導入するたびに変更するので、これは問題ではありません。

31 ページの Wolff の本に見られるように、私は現在、古い OpenGL 3.3 の方法から新しい OpenGL 4.3 の方法に頂点配列を移植するのに少し問題があります。

古い方法:

gl::EnableVertexAttribArray(0);
gl::BindBuffer(gl::ARRAY_BUFFER, vbo);
gl::VertexAttribPointer(0, 3, gl::FLOAT, false, 0, nullptr);

新しい方法:

gl::EnableVertexAttribArray(0);
gl::BindVertexBuffer(0, vbo, 0, sizeof(GLfloat) * 3);
gl::VertexAttribFormat(0, 3, gl::FLOAT, false, 0);
gl::VertexAttribBinding(0, 0);

うまくいけば、これで私が話していることを理解していただけたでしょうか。私の本当の問題は要素配列に関するもので、Wolff はあまり詳しく説明していません。さらに、SuperBible で要素配列を見つけることができないようで、インデックスが誤解を招きます (SuperBible を読む本としてではなく、リファレンスとして扱っていることに注意してください)。

オンライン ドキュメントに従って、次のコードを適用する必要があると思います。

gl::BindBuffer(gl::ELEMENT_ARRAY_BUFFER, ebo);
gl::BufferData(gl::ELEMENT_ARRAY_BUFFER, size, ptr, gl::STATIC_DRAW);

ただし、メッシュが見えないようです。私が見落としていたかもしれない要素配列を処理する新しい方法があるかどうか疑問に思っていますか?

乾杯!

4

0 に答える 0