2012-09-10 26 views
11

Với tất cả các chương trình SDL/OpenGL của tôi, tốc độ khung hình bị kẹt ở tốc độ 60 khung hình/giây, vì vậy có vẻ như đã bật, nhưng không phải bởi tôi, cũng như trong mã hoặc cài đặt của tôi. vì vậy tôi muốn bây giờ nếu có một cách để vô hiệu hóa nó, có thể trong một số cài đặt macOS sâu?Cách tắt vsync trên macOS

Trả lời

3

Sau nhiều năm tìm kiếm một workaround (và với sự giúp đỡ của Brett Hale) đây là những gì làm việc cho tôi - Tôi đã nói thêm rằng đoạn mã vào lúc bắt đầu làm cho vòng lặp của tôi (và không chỉ ở các init, như Apple dường như để thiết lập lại các thiết lập SwapInterval mỗi lần ...) và là cuối cùng có thể có tốc độ khung hình unsynchronize:

#ifdef __APPLE__ 
GLint      sync = 0; 
CGLContextObj    ctx = CGLGetCurrentContext(); 

CGLSetParameter(ctx, kCGLCPSwapInterval, &sync); 
#endif 

Đừng quên bao gồm <OpenGL/gl.h>

Nó không phải là đẹp nhất giải pháp nhưng nó thực sự là người duy nhất tôi thấy rằng công việc như một sự quyến rũ.

4

Chào mừng bạn đến với SO. Tôi đã vạch ra cách tiếp cận here cho một câu hỏi tương tự. Bạn nên xem xét rằng hầu hết các màn hình LCD của Mac bị khóa đến 60Hz và phần cứng gần đây hơn được giới hạn ở 120Hz. Vô hiệu hóa vsync chỉ đơn giản là có thể dẫn đến các chu kỳ CPU/GPU bị lãng phí và có thể giới thiệu các tạo phẩm rách.

+0

Vâng, tôi đã ngừng tìm kiếm một giải pháp ... Cảm ơn! – Nox

7

Điều này cho phép tôi nhận khoảng ~ 700 khung hình/giây trên MacBook Pro của tôi.

Nó không phải là vĩnh viễn , hoàn hảo cho thử nghiệm/đo điểm chuẩn.

Source

+1

Oh tiện ích của tôi, sau tất cả thời gian đó !! Cảm ơn bạn rất nhiều! – Nox

+0

tôi đã thử điều này và không có gì xảy ra. Tôi đang làm gì sai? –

+0

1. Kiểm tra kỹ xem ứng dụng bạn đang thử nghiệm có thực sự vượt quá 60 khung hình/giây hay không; 2. Giải pháp này là dành cho Mavericks 10.9, chưa được kiểm tra cho Yosemite hoặc El Capitan – cevaris

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