問題タブ [vertex-array-object]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
4278 参照

android - Androidの頂点配列オブジェクト?

開発する予定のグラフィックを多用するアプリの準備として、Androidコードを作成しています。私は2004年以来OpenGLを実行していません。http: //www.opengl.org/wiki/Vertex_Array_Objectに出くわし、PCプラットフォームの複数のソースは、vertex-array-objectsを使用することがレンダリングの最良の方法であると主張しています。

私のターゲットプラットフォームは、Android2.3を搭載したMotorolaAtrix2スマートフォンです。

GL_OES_vertex_array_objectに対応する関数のインクルードが見つからないようです。glGenVertexArraysOESに似た関数を呼び出したい。

AndroidでVAOを使用するにはどうすればよいですか?

私の現在のインクルードは

0 投票する
1 に答える
3040 参照

opengl - OpenGLのクワッドの単一頂点に色を適用する

を介して描画されるクワッドの単一の頂点に色を付けようとしてglDrawElementsます。cocos2d libray を使用しているため、ソース コードを清掃して何が起こっているかを正確に理解することができました。コードは次のとおりです。

そのため、頂点配列オブジェクトが使用されます。渡されたオブジェクトの単一の頂点の色を変更しようとしていますが、機能しているように見えますが、次の画像で説明されている不具合があります。

ここに画像の説明を入力

ここでは左下と右下の頂点の色を変えてみました。結果は異なります。これは、クワッドが、左下の頂点から右上の頂点に向かう対角線上にある共有斜辺を持つ三角形のカップルとしてレンダリングされるためだと思います。したがって、これにより異なる結果が生じる可能性があります。

ここで、最初のケースについても 2 番目の結果を取得したいと思います。入手する方法はありますか?

0 投票する
1 に答える
3432 参照

opengl - Vertex Array Objects - 現在バインドされている頂点バッファについて保存されている状態情報に関する正確な混乱

グラフィック エンジンを構築しているときに、 arcsynthesisの優れたチュートリアルに取り組んでいますが、思ったほど VAO を理解していないことに気付きました。

チュートリアル第5章から。オブジェクトの詳細

バッファ バインディングと属性の関連付け

glBindBuffer(GL_ARRAY_BUFFER) は、レンダリング用の属性設定の一部ですが、そのリストにないことに気付くかもしれません。GL_ARRAY_BUFFER へのバインディングは VAO の一部ではありません。これは、glBindBuffer(GL_ARRAY_BUFFER) を呼び出したときに、バッファー オブジェクトと頂点属性の間の関連付けが行われないためです。この関連付けは、glVertexAttribPointer を呼び出したときに発生します。

glVertexAttribPointer を呼び出すと、OpenGL はこの呼び出しの時点で GL_ARRAY_BUFFER にバインドされているバッファを取得し、それを指定された頂点属性に関連付けます。GL_ARRAY_BUFFER バインディングは、glVertexAttribPointer が読み取るグローバル ポインターと考えてください。したがって、glVertexAttribPointer 呼び出しを行った後、必要なものを自由に GL_ARRAY_BUFFER にバインドすることも、何もバインドしないこともできます。最終的なレンダリングには何の影響もありません。そのため、VAO はどのバッファ オブジェクトがどの属性に関連付けられているかを保存します。ただし、GL_ARRAY_BUFFER バインディング自体は保存されません。

私は最初、最後の行「...しかし、GL_ARRAY_BUFFERバインディング自体を保存していません」を見逃していました。この行に気付く前に、glVertexAttribPointer が呼び出されると、現在バインドされているバッファーが保存されていると思いました。この知識が欠けていたので、メッシュ クラスを作成し、多数のメッシュが適切にレンダリングされたシーンを取得することができました。

そのコードの一部を以下に示します。draw 関数で glBindBuffer を呼び出さないことに注意してください。

ライティングを開始しようとしているので、すべての法線が正しいことを確認できるように、デバッグを作成したいと思いました。現在、フレームにレンダリングするすべての行をベクターに保存するだけです。このデータはフレームごとに変更される可能性が高いため、GL_DYNAMIC_DRAW を使用して、レンダリングする直前にデータを指定しています。

最初にこれを行ったとき、無限を指すだけのガベージラインが得られました。問題のあるコードは次のとおりです。

上記で見逃した詳細を見つけるだけでなく、少し探した後、描画関数で glBufferData の前に glBindBuffer を呼び出すと、すべてがうまくいくことがわかりました。

これを考えると、メッシュレンダリングが最初に機能した理由について混乱しています。バッファ内のデータを変更した場合、glBindBuffer を再度呼び出す必要がありますか? または、バッファをバインドせず、運が悪かっただけで動作した場合、動作は未定義ですか?

OpenGL バージョン 3.0 をターゲットにしていることに注意してください。

0 投票する
2 に答える
742 参照

opengl - インターリーブされた頂点配列オブジェクトに色が表示されない

頂点ごとに独自の色で頂点の束をレンダリングしようとしています。頂点の数は約 1 ミリオンなので、頂点配列オブジェクトを使用してレンダリングします。ポイントをレンダリングしても問題ありませんが、データ配列に色を追加すると、ポイントはまだ白くレンダリングされます。見つけたさまざまなチュートリアルを試しましたが、すべてうまくいきませんでした(tut1tut2またはthisなど)。

私は VCVCVC を含む 1 つの配列にデータを持っています...頂点位置に 3 つの浮動小数点数、色に 4 つの浮動小数点数。

私は OpenGL を初めて使用するので、見えない愚かな間違いを犯した可能性があります。

ところで:配列内の色があっても、頂点の位置はまだ正しいです