OpenGL:フレームが部分的に前後にジャンプする[終了]


8

私はSDLとOpenGLでプロジェクトに取り組んでいます。このゲームは、Windows、Linux、OS X、iOSでうまく動作します。ただし、Android版は特に私の電話で問題を示しています。私は別のデバイスをテストしましたが、そこでもうまく機能します。

私が直面している問題は視覚的な不具合です。これはバーストで発生します。たとえば、90フレームは問題なく、40フレームはグリッチです。グリッチ自体は説明するのが難しいですが、私は試してみます。画面が部分的に正しく更新され(携帯電話の上部から約半分まで)、部分的にちらつきます。ちらつき効果は、ある種の前後のジャンプです。ダブルバッファリングに関係していると思います。画面に表示されるのは、フレームごとに前後にジャンプするためです。画面の半分が時間的に1フレーム、次のフレームが2フレーム遅れているようです。エヒタナハの行列のように、私はあなたが言うことができると思います。チャートを下っていくときに時間が経過するチャートにプロットすると、

          left half | right half  (phone is in landscape)
         ------------------------
time  1 |      1           1
time  2 |      2           2
time  3 |      3           1
time  4 |      4           4
time  5 |      5           3
time  6 |      6           6
time  7 |      7           5
time  8 |      8           8
time  9 |      9           7

したがって、右半分は時間の1フレームであり、次のフレームは前のフレームを示しています。これは、ダブルバッファリングに問題があるという私の理論を裏付けています。画面に表示される前にバックバッファを完全に更新することができないようです。

また、画面の正常とグリッチの分割はフレームごとに異なります。この点は、同期の問題であり、何が起こっているのかによって大きく異なることを証明していると思います。呼び出しのglFinish();前に追加してSDL_GL_SwapWindow();も効果はありません。

バージョン情報: SDLは、オンになっているvsyncを報告します。しかし、私はこれは引き裂かないと思います。私の電話はSamsung Galaxy S3 miniであり、Android 5.1.1(CM12)を実行しており、GPU(Mali-400)はOpenGL ES 2.0をサポートしています。他のゲームは私の電話で大丈夫です。


電話モデルは何ですか?
concept3d 2015年

Samsung Galaxy S3 mini。CyanogenMod 12を実行
Martijn Courteaux、2015年

私はそれが私の電話のいたるところにあることを発見しましたが、より微妙です。システムUIでもメニューをスクロールします。
Martijn Courteaux、2015

2
これはお使いの携帯電話のバグのように聞こえます。私の推測では、ファームウェアの更新はそれを解決する最も可能性の高い方法です。
rolobo

@rolobo:はい、確かに。しかし、私は他のすべてに非常に満足しており、私の電話はこのプロジェクトの単なるテストデバイスであり、私の主な開発プロセスの一部ではありません。
Martijn Courteaux

回答:


0

Readmeのセクションでそれについて説明しています:

「汚れた長方形」レンダリング技術の使用に関する注意

[...]各フレームで画面の一部のみを更新する場合、Androidで他のプラットフォームにはないさまざまな視覚的な不具合に気付く場合があります。これは、OpenGL ES / ES2コンテキストを処理するためのサポートシステムとしてのSGLのEGLの使用、特にeglSwapBuffers関数の使用が原因です。関数のドキュメントに記載されているように、「補助バッファーの内容は、eglSwapBuffersを呼び出した後は常に未定義です」。

SGLでは、サーフェスのEGL_SWAP_BEHAVIOR属性をEGL_BUFFER_PRESERVEDに設定することはできません。これは、EGL 1.4が必要であり、APIレベルでのみ利用できるため、このプラットフォームで利用できる唯一の回避策は、フレームごとに画面全体を再描画することです。


そのリンクから関連する情報の要約と、その情報が質問にどのように答えるかの説明を含めてください。
tyjkenn 2017

...元の質問では、「汚れた長方形」のレンダリングについて何も言われていませんでしたか?
Trevor Powell
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.