VSync etkinleştirilmiş olsa bile engelleme olmayan bir SwapBuffers() yapmak için taşınabilir bir yol arıyorum. Başka bir deyişle, bir olay tarafından bildirilmek veya bir sonraki VSync'e kadar olan gecikmeyi bilmek mümkün mü?engellenmeyen SwapBuffers() VSync ile = on
cevap
IIRC bu uzantı aşağıdakilere yardımcı olur: http://www.opengl.org/registry/specs/SGI/video_sync.txt, ancak şu anki sürücülerle çok zayıf bir şekilde desteklenir.
Maalesef haklısınız, bu özellik çok zayıf bir şekilde destekleniyor. –
İlk olarak, neden karenin başında SwapBuffers() öğesini çağırmıyorsunuz? OpenGL sadece ona attı komutların hiç uzağa çalışıyor iken Ya nasılsa
Render();
Update(); //Update before swapping buffers
SwapBuffers();
için boru hattını değiştirmek, güncelleme mantığı her şeyi yapabilirsiniz. Aksi takdirde, bu sorunu çözmenin birkaç yolu vardır.
XNA'nın, ekranın şu anda taranmasını sağlayan ScanLine Özelliği olduğunu biliyorum. OpenGL'in bunu da ortaya çıkarır mı bilmiyorum, ama emin olmalıyım. (Sağ?)
Çok iş parçacıklı oluşturmayı kullanın. Pek çok modern motor, sadece render için bir iş parçacığı ayırır. Engellerse, sorun değil, ana parçayı rahatsız etmiyor. Alternatif olarak yeni bir iş parçacığı üzerinde giriş vb. Işlemek için daha kolay bir yol, bu grafik bağlamları ile ilgili karmaşıklıkları önler.
triple buffering'u kullanın. Üçlü arabelleğin kullanılması, 2 arka tampon belleğe sahip olduğunuz anlamına gelir. SwapBuffers'ı çağırdığınıza göre, ekran, yeni arabelleğinizi beklerken ön arabelleği taramaya ve sonraki kareyi oluşturmaya yönelik üçüncü arabelleğe devam edebilir. Tabii ki, zaten iki kare prerenderlediyseniz, SwapBuffers() engeller.
- 1. Birden çok OpenGL penceresini vsync ile eşitleme
- 2. Engellenmeyen http isteği döngü
- 3. Adlandırılmış engellenmeyen borular
- 4. Python'da engellenmeyen soket mi?
- 5. Python'da engellenmeyen soket programlama
- 6. HTML5 tuvalinde vsync geri arama nasıl alabilirim?
- 7. Xlib uygulamasında VSYNC için nasıl beklenir?
- 8. MacOS'taki vsync nasıl devre dışı bırakılır
- 9. Basit, engellenmeyen bir şekilde uyumak için?
- 10. C/C++ prizler ve engellenmeyen recv()
- 11. Python'da, engellenmeyen bir sistem çağrısını nasıl yapabilirim?
- 12. javascript/jquery'de engellenmeyen bir uyku nasıl yapılır?
- 13. Docker on elasticbeanstalk ile uzantılar
- 14. Tarih biçimini on exchange ile
- 15. JQuery - eleman ekleme ile .on kullanarak
- 16. Ruby on Rails ondalık ile çalışma 3
- 17. Proguard On ile Android Studio'da Debuginder'ı çalıştırın
- 18. Çizgi ve mySQL'in Ruby on Windows ile
- 19. curses on gcc (OS X) ile derleyemiyor
- 20. Apache Mahout'u Ruby on Rails ile Kullanma
- 21. Oracle: SET SERVEROUTPUT On Toad ile birlikte
- 22. Firebase, Ruby on Rails ile nasıl kullanılır?
- 23. Dili Ruby on Rails ile değiştirin. 3
- 24. Mongrel ile Windows Üzerindeki Ruby On Rails
- 25. Ruby on Rails link_to put Yöntemi ile
- 26. python on linux ile dosyaya yazmak
- 27. Ruby on Rails: ActiveResource ile Oturum?
- 28. Resim ile Basit ON/OFF geçiş düğmesi
- 29. DTLS engellenmeyen program örneği mi arıyorsunuz (C/C++)
- 30. pyserial engellenmeyen Böyle seri veri okuyorum okuma döngü
Bu, eğer mümkün ise, platforma özgü olacak. Bu yüzden lütfen en az etiketleyerek platformunuzu belirtin. – unwind
Bu özelliği uygulamak için taşınabilir bir yol bulmak isterim (Win32/Linux/MacOSX) –
Sonraki vsync'e olan gecikme size nasıl yardımcı olur? Takas çağrısı çağrısı, çağrı sırasında takası yapmaz. – Bahbar