0

1つを除くすべてのモデルが正しくレンダリングされているという奇妙な問題が発生しています。モデルを共有頂点(頂点のセット+インデックス配列)の使用から複製頂点の使用(モデルにテクスチャを設定できるようにするためにこれを行う必要があります)に変更した場合、共有頂点を使用するとすべてのモデルが正常に機能しました。複製された頂点にスワップしたとき、モデルの1つを除いてすべてが機能し、その理由がわかりません。偶然にも、頂点の数が最も多いモデル(共有の場合は20、複製の場合は108)であるため、おそらくそれと関係があります。

この問題を修正するためにこれまでに行ったこと:

  • モデルを最初から再作成しました(非常に単純なモデルであるため、これは簡単な作業です)
  • 新しいモデルが正しくレンダリングされず、モデルが共有頂点に戻され、再び機能します(このようにテクスチャを作成することはできませんが、役に立ちません)
  • データ型の問題が発生した場合に備えて、インデックス配列をGLubyteからGLushortに変更しました
  • インデックス配列の描画順序を試して、それが何らかの三角形の曲がりくねった問題であるかどうかを確認しましたが、そうではないようです(背面のカリングもオフにして確認しました)

私のモデルはすべて、基本的な形状、ピラミッド、立方体...二十面体までです。十二面体は問題を引き起こしている形です(12面のサイコロのように見えます)。図形を描画するために必要な36個の三角形のうち約8個だけが表示されるようにレンダリングすると、残りは透明になるか、まったく表示されません。SoftImageを使用してすべてのモデルを同じ方法で作成したので、モデル自体とは関係がないと思います。表示されている三角形では、テクスチャが正しく表示されます。すべてのモデルが同時に画面に表示されるため、モデルのレンダリングに固有ではない可能性のあるものをすべて除外できます。また、同じ関数を使用してレンダリングしますが、配列が異なります。

これを引き起こしている可能性があるものを見つけるために私が取ることができるステップについての提案はありますか?

複製された頂点を使用したモデルは次のようになりますhttp://pastebin.com/2hg7D0Ga ここに共有されたhttp://pastebin.com/tUqTUM91があります

このようなモデルをレンダリングできるものがある場合は、アプリケーションですばやくテストして、それが機能するかどうかを確認できます。

これが私の関連するレンダリングコードですhttp://pastebin.com/fRiKM89M

これは、適切にレンダリングされていない場合のモデルの外観ですhttp://imgur.com/2u4el

誰かが私が見落としている何かを見つけられることを願っています。あなたがこれまでにそれを成し遂げたならば、これをすべて読むために時間を割いてくれてありがとう

4

1 に答える 1

0

わかりました、今はちょっとばかげているように感じますが、それは正直な間違いでした。NumVertices などがある私のコードを見ると、それらはすべて Glubytes であり、完全に忘れていました。それらを int として定義したと仮定していました。したがって、最も多くの頂点を持つ 1 つのモデルでは、その数は GLubyte の最大値である 255 を超えていましたが、他のどのモデルも超えていませんでした。

このような複雑なエラーに対する本当に簡単な修正です。OpenGL が壊れると、本当に技術的な問題が発生したと常に考え、単純な問題を見落とします。

于 2012-08-27T14:47:01.153 に答える