LoginSignup
6
4

More than 5 years have passed since last update.

OpenGL with Core Profile は VAO 指定しないと描画すら出来ない

Posted at

題意通り。2回ほど引っかかってしまったのでメモとして残すことに。

VAO (Vertex Array Object) について

OpenGL でコンテキスト作成時に Core Profile を指定した場合描画するためには OpenGL 3.0 で仕様に入った VAO が必要になる。3.0 未満でも GL_ARB_vertex_array_object があれば利用可能。Qt で使う場合 5.1 で入った QOpenGLVertexArrayObject を使うと少しシンプルになる。

無視して VAO 作らなかった場合

VAO 以外で描画しようとすると glEnableVertexAttribute または glDraw で始まる描画関数で GL_INVALID_OPERATION を返す。そのため何も描画されない。OpenGL 4.4 の Core Profile 仕様書では VAO 自体の仕様は 10.4 にあり、VAO が指定されないとエラーが返されることは 10.3/10.5 のエラー仕様に幾つか書かれている。

Core Profile について

Core Profile は OpenGL 3.2 で Compatible Profile とともに導入され、OSX では 10.7 で OpenGL 3.3 対応とともに入った。OSX では 3.x 以上の機能は拡張として用意されるものを除いて基本的に Core Profile じゃないと利用できない。2.1 以前の固定機能がたくさん使われているがどうしても Core Profile を使いたい場合は Regal を導入すると良いだろう。

See Also

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4