/ / OpenGL、画面が更新されない場合は、Assimp 3Dモデルを追加してください。[closed] - opengl、3d、vbo、assimp

OpenGL、画面が更新されません.Aspimp 3Dモデルを追加しました。[閉じる] - opengl、3d、vbo、assimp

私はOpenGL 4.0を使用しています、私は自分のシーンに3つのものを持っています、

1-VBO平面
2-キューブマップ
3次元モデル[3ds / obj]

私は3DモデルをインポートするためにAssimpライブラリを使用しています。モデルをインポートするために作成したコードは、ThePlusPlusGuyのYouTubeのチュートリアルの助けを借りて行われました。

ここに私が直面している問題があります、私は私のシーンで飛行機をレンダリングすることができます、私はキューブマップ、a.k.a. skyboxesをレンダリングすることができます、私のシーンで、私は一緒にレンダリングすることができます。
しかし、3Dモデルをレンダリングしようとすると、.3dsや.objのように画面が更新されません。画面のサイズを変更しても更新されません。
これは、3Dモデルをレンダリングする場合にのみ発生します。 私はフラグを使用し、実行時に3Dモデルを描画することができました。モデルをレンダリングするまでプログラムはうまく動いています。モデルをレンダリングするとモデル自体は画面に表示されませんが、画面は再びフリーズします。
私はそれを見つけたが、誰もこのような問題を抱えているようではない。

私の主な診断は、私がこの問題を抱えている飛行機、キューブマップ、3DモデルにVBOを使用しているためです。

回答:

回答№1は2

ここに提案のリストがあります:

  • VBOの使用は問題ではありません。 Assimpを使用していません。
  • 適切な数のインデクスとプリミティブをバッファに入れて呼出しを描画し、それらが適切にフォーマットされていることを確認します。 OpenGLのドキュメントは、これらの数値が必要とするもの(バイト、インデックス、三角形など)が不明な場合がありますので、うまくいきます.Wikiはこれを説明するうえでより良い仕事をしています。
  • あなたのモデルは実際にローディングステージを過ぎていますか?あなたはとてもシンプルなモデルを試しましたか?
  • モデルを一度だけロードしていることを確認してください。レンダリングループではなく、そうであれば、それが一度だけロードされるようにするメカニズムがあります)モデルを読み込むようにプログラムに繰り返し指示すると、非常にゆっくり実行され、すべてのメモリを使い果たす危険があります。
  • モデルを適切に翻訳したことを確認してくださいAssimpのデータ構造からあなた自身のデータ構造へ値が正しく設定されていることを確認するOBJをロードし、コピーした値を印刷する。
  • あなたはモデルを読み込んだときに有効なOpenGLコンテキストを持っていますか?Assimpからの読み込みには必要はありませんが、そのデータ構造からVBOへの読み込みはありません。

私はあなたがこれらの事柄をいくつかやったことを確信していますが、私はこの作業をやっているときにはやっかいなこともありました。


回答№2の場合は1

私はAssimpを使ってエディタでモデルをインポートしていますが、Assimpはモデルとメッシュデータを読み込むためにのみ使用され、値は自分のモデル/メッシュ形式で保存されます。私たち全員がこれをやると思いますか?私はAssimpで何の問題もありませんでした。また、他の不透明なオブジェクトの後にスカイボックスなどをレンダリングする必要があるので、レンダリング時間を最小限に抑えるためにいくつかのトリックを行うことができると信じられています(スカイボックスは遠方のオブジェクト)。

私はバートクに同意する傾向があります。 Assimpはあなたが抱えている問題とは無関係のようですが、レンダリング方法の再設計を検討します。


回答№3の場合は1

私はプレーンをレンダリングした後にこれをするのを忘れていました - >

glBindVertexArray(0);

その後、プログラムは魅力的に働いていました。