Saya sedang mengerjakan proyek dengan SDL dan OpenGL. Gim ini bekerja sangat baik di Windows, Linux, OS X dan iOS. Namun, versi Android menunjukkan masalah pada ponsel saya pada khususnya. Saya telah menguji perangkat lain dan itu berfungsi dengan baik juga.
Masalah yang saya hadapi adalah kesalahan visual. Ini terjadi dalam semburan: misalnya: 90 frame oke dan kemudian 40 frame kesalahan. Kesalahan itu sendiri agak sulit untuk dijelaskan tetapi saya akan coba. Layar sedang diperbarui sebagian dengan benar (dari bagian atas ponsel saya menjadi sekitar setengah jalan) dan sebagian berkedip-kedip. Efek kedipan adalah semacam bolak-balik melompat. Saya berpikir bahwa ini terkait dengan buffering ganda. Saya pikir itu karena apa yang bisa saya lihat di layar adalah bolak-balik setiap frame. Sepertinya setengah dari layar adalah satu frame dalam waktu dan frame berikutnya 2 frame terlambat. Cukup mirip prosesi Echternach, saya kira Anda bisa mengatakannya. Jika saya memplotnya dalam bagan di mana waktu terus berjalan ketika bergerak ke bawah grafik, saya pikir saya
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
Jadi setengah yang tepat adalah satu frame dalam waktu, dan frame berikutnya, itu menunjukkan frame sebelumnya. Ini mendukung teori saya bahwa ada masalah dengan buffering ganda. Sepertinya entah bagaimana tidak bisa sepenuhnya memperbarui backbuffer sebelum diletakkan di layar, atau apalah.
Juga, pemisahan antara baik dan kesalahan pada layar berbeda dari bingkai ke bingkai, yang menurut saya membuktikan itu adalah masalah sinkronisasi dan sangat tergantung pada waktu dari apa yang terjadi. Menambahkan glFinish();
sebelum SDL_GL_SwapWindow();
panggilan tidak membantu.
Info versi: SDL melaporkan vsync untuk dihidupkan. Namun, saya percaya ini tidak sobek. Ponsel saya Samsung Galaxy S3 mini dan menjalankan Android 5.1.1 (CM12) dan GPU (Mali-400) mendukung OpenGL ES 2.0. Game lain berjalan baik di ponsel saya.
Jawaban:
Bagian dari readme berbicara tentang hal itu:
sumber