2

PowerVR SGX 540 を搭載した Playbook 用の 3D アプリケーションを作成しています。opengl を介して VBO に十分なデータを詰め込むと、デバイスがクラッシュする可能性があることに気付きました (アプリケーションだけでなく、デバイス全体、ハード リブートが必要です)。クラッシュを引き起こすために、最大 30 万個の三角形と最大 15 万個の頂点を持つモデルのデータを送信しました。頂点の通常のデータも送信しました。

送信するデータが少ない場合は問題が発生しないことがわかりました (三角形と頂点の半分で別のモデルを試しました)。また、頂点配列を使用しても問題は発生しません (非常に遅いですが)。

知りたい:

  • 私が見ているのは、モバイル ハードウェアの一般的な結果ですか? つまり、150k の頂点と法線を持つ 300k tri モデルは過剰ですか?

  • さまざまなモデル サイズをテストする以外に、VBO の使用に使用できるメモリの量を確認できますか (クラッシュからデバイスを回復するのに 5 分ほどかかります)。

  • 他に何かこの問題を引き起こしている可能性はありますか? 私はいくつかの追加情報を提供しました:

私は GUI に Qt を使用しており、GUI に描画する前に 3D シーンを FBO に描画しています (EGL ウィンドウを作成して UI なしでこれをすべてやり直すかどうかはまだ確認していません)。 - しばらく時間がかかります)。

OpenGL の使い方が下手ではないことを確認するために、すべての 3D 要素に対して生の OpenGL 呼び出しを使用することと、OpenSceneGraph を使用してすべてを実行することの両方を試しました。どちらの方法もまったく同じように失敗します (VBO は少ないデータで機能し、頂点配列は機能し、VBO データが増えるとクラッシュします)。

プログラムはデスクトップで正常に動作します。残念ながら、アプリケーションをテストできるモバイル デバイスは他にありません。

4

1 に答える 1

0

OpenGL ES は、インデックスのデータ型として unsigned short (16 ビット) のみをサポートするため、インデックス配列を使用している場合は、その制限を超えています。

于 2012-07-19T10:22:55.387 に答える