2015-05-16 32 views
9

XWindow Drawable, Pixmap ve XRender kullanarak ekranda bir şey çiziyorum. Bazen titrek olduğunu görebiliyorum. VBLANK'ı beklemenin bir yolu var mı? Çok fazla googled ettim, bir ormanda para aramak gibi.Xlib uygulamasında VSYNC için nasıl beklenir?

NO OpenGL söz konusu. Bu Linux (Ubuntu). (nano) sleep() işlevini kullanabilirim, ancak çekiliş zamanının nasıl gerçekleştiğini bilmem gerekiyor.

+0

Bunu düzeltmeyi başardınız mı? (X ile ilgili teknolojilerin belgelerinin bulunması zor ...) –

cevap

3

Senkronizasyon ve çift tamponlamaya yönelik mükemmel yüksek seviyeli arayüzü nedeniyle, en basit çözüm GLX'i kullanıyorum. Lütfen GLX'in OpenGL olmadığını, bir X uzantısı olduğunu unutmayın. SwapBuffers (bazı garip nedenlerden dolayı) talep ettiği gibi kukla bir OpenGL bağlamına ihtiyacınız var, ama bu konuda.

Herhangi bir nedenden dolayı GLX olmadan yapmak isterseniz, bunu X Çift Tampon Uzantısı (DBE) üzerinden çift arabellek oluşturarak ve X Syncronization Extension kullanarak görüntülenmek üzere elle senkronize ederek yapabilirsiniz. Kendime yapmadıysanız ancak sevme çağıran XSyncListSystemCounters bir şeyler bulmak mümkün olmalıdır (doğru başlatmasından sonra!):

XSyncListSystemCounters Ekranın desteklediği sistem sayaçları bir dizi için bir işaretçi döndürür

Zor yoldan kendimi daha fazla bulamıyorum. İyi şanslar.