簡體   English   中英

如何在 Xlib 應用程序中等待 VSYNC?

[英]How to wait for VSYNC in Xlib app?

我正在使用 XWindow Drawable、Pixmap 和 XRender 在屏幕上繪制一些東西。 我可以看到有時會有閃爍。 有沒有辦法等待VBLANK? 我已經用谷歌搜索了很多,感覺就像在森林里找硬幣一樣。

不涉及 OpenGL。 它是 Linux (Ubuntu)。 我可以使用 (nano)sleep(),但需要知道繪制的時間何時到來。

我發現迄今為止最簡單的解決方案是使用 GLX,因為它具有出色的同步和雙緩沖高級接口。 請注意 GLX 不是 OpenGL,它是一個 X 擴展。 您需要一個虛擬的 OpenGL 上下文,因為 SwapBuffers(出於某種奇怪的原因)需要它,但僅此而已。

如果您出於任何原因想在沒有 GLX 的情況下執行此操作,您可以通過 X 雙緩沖區擴展 (DBE) 創建雙緩沖區並使用 X 同步擴展手動同步顯示。 我自己沒有這樣做,但您應該能夠找到自己喜歡的東西,調用 XSyncListSystemCounters(在正確初始化之后!):

XSyncListSystemCounters 返回指向顯示器支持的系統計數器數組的指針

不過,我自己找不到更多關於艱難道路的信息。 祝你好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM