2015-05-16 25 views
9

Tôi đang vẽ một cái gì đó trên màn hình bằng cách sử dụng XWindow Drawable, Pixmap và XRender. Tôi có thể thấy rằng đôi khi có nhấp nháy. Có cách nào để chờ cho VBLANK? Tôi googled rất nhiều, cảm thấy như tìm kiếm một đồng xu trong một khu rừng.Làm thế nào để chờ VSYNC trong ứng dụng Xlib?

Không có liên quan đến OpenGL. Đó là Linux (Ubuntu). Tôi có thể sử dụng (nano) ngủ(), nhưng cần phải biết khi nào thời gian để vẽ đã đến một số cách.

+0

Bạn đã cố gắng khắc phục điều này chưa? (Tìm tài liệu về các công nghệ liên quan đến X là khó khăn ...) –

Trả lời

3

Tôi tìm thấy giải pháp đơn giản nhất hiện nay là sử dụng GLX vì giao diện cấp cao tuyệt vời của nó hướng tới đồng bộ hóa và đệm đôi. Xin lưu ý GLX không phải là OpenGL, nó là một phần mở rộng X. Bạn cần một bối cảnh OpenGL giả như SwapBuffers (vì một số lý do kỳ lạ) đòi hỏi nó nhưng đó là về nó.

Nếu bạn muốn thực hiện nó mà không có GLX vì bất kỳ lý do gì, bạn có thể thực hiện bằng cách tạo bộ đệm đôi thông qua phần mở rộng bộ đệm đôi X (DBE) và đồng bộ hóa theo cách thủ công theo hướng hiển thị bằng phần mở rộng đồng bộ hóa X. Tôi đã không làm như vậy bản thân mình nhưng bạn sẽ có thể tìm thấy một cái gì đó theo ý thích gọi XSyncListSystemCounters của bạn (sau khi khởi tạo đúng!):

XSyncListSystemCounters trả về một con trỏ đến một mảng các quầy hệ thống hỗ trợ bởi màn hình

Không thể tìm thấy nhiều hơn nữa bản thân mình về cách khó khăn mặc dù. Chúc may mắn.

Các vấn đề liên quan