GL_ARRAY_BUFFER または GL_ELEMENT_ARRAY_BUFFER にバインドされた頂点バッファー オブジェクトの最大サイズはありますか?
もともと、16 個のサブメッシュで構成されるメッシュを描いていました。サブメッシュごとに頂点バッファーを作成し、レンダリング フェーズ中に glDrawElements を呼び出しました。これは iOS シミュレーターでは正常に機能しましたが、デバイスにレンダリングしようとすると、画面が絶えず点滅し、メッシュが表示されません。
次に、いくつか読んだところ、レンダリング段階で glDrawElements を何度も呼び出すべきではないことがわかりました。すべてのサブメッシュを 1 つの頂点バッファーに結合しようとしました。GL_ARRAY_BUFFER にバインドされたバッファーには 3969 個の頂点が含まれ、各頂点には 20 個の float が含まれます。したがって、このバッファのサイズは 317520 バイトです。GL_ELEMENT_ARRAY_BUFFER にバインドされたインデックスは 16425 ショートです。したがって、このバッファのサイズは 32850 バイトです。
OpenGL wiki では、Vertex Buffer Object の「1 つの nVidia ドキュメントによると、1MB から 4MB が適切なサイズです」と書かれています。
各バッファ オブジェクトをバインドし、glDrawElements を呼び出した後、glGetError の結果を出力しましたが、エラーは表示されません。ただし、メッシュが正しく表示されません。最初のメッシュだけが正しく描画されるようです。私がこれを実装した方法に怪しいものはありますか? この質問を長くしたくなかったので、この質問に答えるために必要な追加情報があれば教えてください。理論的に間違っていると思われるものが何もない場合、おそらく私はそれを実装する際に間違いを犯しただけです.