2017-10-21 2 views
1

OpenGLでは、名前付きバッファオブジェクト(または頂点配列オブジェクト、フレームバッファなど)をバインドし、現在バインドされているオブジェクトに対していくつかの操作を呼び出し、次にある種の「デフォルト」オブジェクトをバインドします。なぜOpenGLバッファオブジェクトをバインドするのですか?

glBindBufferObject(GL_ARRAY_BUFFER, bufferObjectName) 
glBufferData(GL_ARRAY_BUFFER, data, GL_STATIC_DRAW) 
glBindBufferObject(GL_ARRAY_BUFFER, 0) 

(KotlinのLWJGL)

多くの機能で「名前付き」バージョンがあることが判明しました。上の例は、オブジェクト指向の文脈ではより適切な方法である

glNamedBufferData(bufferObjectName, data, GL_STATIC_DRAW) 

のようになります。

なぜ、最初の例のようなものを使用するのですか?私が来たすべてのチュートリアルでは、最初のアプローチを使用しました。

+2

"named"関数は、4.5などのOpenGLの新しいバージョンでのみ使用できます。以前は存在しませんでした。使用するものは、古いハードウェアとの互換性を確保するかどうかによって異なります。 – Rabbid76

答えて

3

名前付き関数は、OpenGL 4.5で導入されたARB_direct_state_access拡張機能の一部です。それ以前は、通常の方法しか存在しませんでした。

古いバージョンを使用する主な理由は、OpenGL 4.5以前のハードウェアを対象としているためです。ほとんどのチュートリアルは古いバージョンのOpenGLに対しても書かれています。

+0

すでに4.6バージョンのコア。 – Hitokage

+1

@Hitokage:どういう意味ですか? 4.5以降のコアです。 – BDL

+0

申し訳ありません、私の間違い。 – Hitokage

関連する問題