質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1774閲覧

OpenGLでVAOがわかりづらい

退会済みユーザー

退会済みユーザー

総合スコア0

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2017/12/15 04:27

VAOはVBOの頂点属性の設定的なのが読み込まれると思いますが
具体的に何を読み込んでいるのでしょうか?

またVAOの関数で特にVBOを引数に置いているわけじゃないのにいつ
読み込んでいるのでしょうか?
もしVBO2などがありそっちを読み込みたい場合どうしたらいいのでしょうか?

glGenVertexArrays(1,&VAO);
glBindVertexArray(VAO);

この二つしか読んでない気がするのですが…
もしくは
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
glEnableVertexAttribArray(0);
これぐらいです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

VAOの存在を知らなかったので調べてみたところ、いい感じの解説がありました。
https://wgld.org/d/webgl/w073.html

VAOはVBO等の設定をまとめるためのもののようです。あるモデルAの頂点用VBO、法線用VBO、テクスチャ座標用VBO、インデックス用VBOがあったとして、従来ではいちいちglBindBufferでVBOを切り替えてglVertexAttrib等でレンダラに渡してやる必要がありましたが、一度VAOにそれらの処理を記録してやれば、モデルAの時はこのVAO、モデルBのときはこのVAO、とVAOを切り替えるだけで頂点、法線、テクスチャ座標、インデックス等のVBOが一括で切り替わるイメージのようです。

投稿2017/12/15 04:39

編集2017/12/15 04:46
masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/12/15 04:41

いつVBOのデータをVAO荷渡ているのでしょうか?
masaya_ohashi

2017/12/15 04:44

解説ページ読みましたか?ここに書いてますよ。 --- バインドが完了すると、ここから先に行うすべての頂点関連処理(主に Attribute 系)を通じて VAO に頂点情報が登録されていきます。先ほど登場した自前の関数の中身で行っていたように、 gl.bindBuffer や gl.enableVertexAttribArray 、 gl.vertexAttribPointer などを適宜呼び出しましょう。これらのメソッドが呼び出されるたびに VAO に情報がひとまとめにされて格納されていきます。
退会済みユーザー

退会済みユーザー

2017/12/15 04:48

すみません 編集前に読んだので解説ページが乗っていませんでした 今見させていただきました ありがとうございます
masaya_ohashi

2017/12/15 04:49

投稿初期の時点で解説ページのリンクは貼ってあったはずですが…まあ読んでみてください。わからなければもう一度聞いてみてください。
Bongo

2017/12/15 05:41 編集

https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glVertexAttribPointer.xhtml によると、 pointer Specifies a offset of the first component of the first generic vertex attribute in the array in the data store of the buffer currently bound to the GL_ARRAY_BUFFER target. The initial value is 0. とのことで、glVertexAttribPointerを呼んだ時点でバインドされているVBOがその属性に紐付けられるようですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問