問題タブ [vao]

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 に答える
432 参照

c++ - When using IBO/EBO, program only works when I call glBindBuffer to bind the IBO/EBO AFTER creation of the VAO

For some reason, this program only works when I bind the IBO/EBO again, after I create the VAO. I read online, and multiple SO posts, that glBindBuffer only binds the current buffer, and that it does not attach it the the VAO. I thought the glVertexAttribPointer is the function that attached the data to the VAO.

#xA;

If I did not have the second glBindBuffer, the program crashes. All I want to know is why I have to call glBindBuffer again, after I create the VAO, when calling glBindBuffer only makes the buffer the active buffer for other functions.

Pastebin (FULL CODE)

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

opengl - OpenGL - シェーダーで頂点カラーを表示できない

そのため、最終的にopenglウィンドウを適切にセットアップし、vaos、vbos、glDrawElements()などを使用して三角形を表示しました.

これが私が持っているものです

しかし今、私は新しい問題を抱えています - シェーダーを動作させることができません。私はまだそれらをよく理解していません。別のバッファ オブジェクトに入れた頂点の色をフラグメント シェーダに表示させたい。

コード例:

そしてレンダリング:

シェーダー以外はすべて正常に動作しているようです。どんな助けでも大歓迎です:)ありがとう。

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

c++ - VAO/VBO を使用した OpenGL モデル/テクスチャ レンダリング

Assimpを使用してテクスチャで 3D モデルをレンダリングしようとしています。変換は完璧に進み、すべてのテクスチャの位置とロードされないものがあります。テクスチャ イメージを 2D で画面に描画してテストしました。何らかの理由で、テクスチャがモデルにレンダリングされません。私は OpenGL の初心者なので、正しく説明していない場合はご容赦ください。コードの基にしたチュートリアルはhereからのものですが、独自のカメラ/移動システムがあるため、大きな部分を取り除きました。

モデルは次のようにレンダリングされます: http://i.stack.imgur.com/5sK9K.png

使用中のテクスチャは次のようになります: http://i.stack.imgur.com/sWGp7.jpg

関連するレンダリング コードは次のとおりです。

データ ファイルからテクスチャを生成する:

VBO/VAO の生成:

レンダリング モデル:

他の関連するコード部分は、私のオープン github プロジェクトhttps://github.com/kwek20/StrategyGame/tree/master/Strategyにあります。

Mesh.cpp は、main.cpp および Camera.cpp と同様に関連しています。

私が理解している限り、私はガイドラインによく従い、VAO を作成し、VBO を作成し、データを追加し、適切な頂点配列属性を有効にしてシーンをレンダリングしました。

すべてのデータ変数をチェックしましたが、すべてが計画どおりに入力されています

ここで誰かが私が犯した間違いを見つけたり、説明したりできますか? 私が持っている制限のために、いくつかのリンクは奇妙に入力されています:(

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

c++ - OpenGL - VBO およびその他のバッファー作成から VAO 定義を適切に分離する

非常に単純な三角形の描画の例を実行して、どの行が特に VAO 定義を参照しているか、他のどの行が離れているかを調べようとしています。

現在、私はこのコードを使用しています:

バッファの作成と充填:

VAO 定義:

描画ループ

描画ループで各フレームに VAO 定義を含めると、この例は正常に実行されますが、描画を開始する前に一度だけ VAO を定義すると機能しないため、VAO 定義にコードが不足していると思います。

私は何が欠けていますか?

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

opengl - 複数のメッシュを持つ VBO を処理するように VAO を構成する

複数のメッシュを含む単一の VBO を表すために単一の VAO を使用しようとしています。今私は持っています:

ソースの詳細はこちら: http://pastebin.com/PDuk3fDu

私の問題は主にスニペットの最後の行にあると思います。

同じ VBO に 2 つの異なるメッシュを詰め込むことができると思いましたか? バッファ ソースを設定するときに、一見 1 つの状態しか設定できない場合、どのようにそれが可能でしょうか?

バインディングは比較的高価な作業であるため、VBOごとに1つのVAOを持つことは非常に非効率的であると読んだため、私はこの問題を経験しています。また、同様のニーズを持つメッシュを同じ VBO に保存することをお勧めします。

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

opengl - 複数のインデックス付き VAO をロードすると、ジオメトリがマージされるように見える

非常に基本的な .obj ファイル ローダー (頂点の座標と三角形の面のインデックスを読み込むだけ) とレンダラーを作成しました。一度に 1 つのモデルのみをロードすると、うまく機能します。2 つ目 (またはそれ以上) のモデルをロードすると、それぞれが自分自身と他のモデルの一部を描画します。これがなぜなのかを理解しようとして頭を悩ませました。

これは、ロードされて描画される単純な円柱です

これは、立方体と円柱 (最初に立方体) をロードするとどうなるかです。

関連するコード スニペット:

ここで .obj ファイルを開き、ファイルから頂点の座標と三角形の面のインデックスを読み取ります。

loadFromFile メソッドの最後で、インデックスと頂点のベクトルを model::load() メソッドに渡します。このメソッドは、VAO、VBO、および IBO を作成してバインドします。

モデルがロードされると、その VAO ID がクラス変数に格納されます。VAO は model::bind() メソッドでロードされます。

そして、glDrawElements() の呼び出しで描画されます

モデルは level::draw() メソッド内で描画されます:

OpenGL エラーはなく、ファイルをコンソールに出力すると、ファイルの解析によって正しい値が生成されます。

誰かがこれがどのように/なぜ起こっているのかを指摘できるなら、私はそれを大いに感謝します.