Просмотр исходного кода

Merge pull request #12354 from marcelofg55/osx_vsync

Implemented vsync OS functions for OS X
Rémi Verschelde 7 лет назад
Родитель
Сommit
fc88cb9d21
2 измененных файлов с 20 добавлено и 0 удалено
  1. 3 0
      platform/osx/os_osx.h
  2. 17 0
      platform/osx/os_osx.mm

+ 3 - 0
platform/osx/os_osx.h

@@ -212,6 +212,9 @@ public:
 	virtual void set_borderless_window(int p_borderless);
 	virtual bool get_borderless_window();
 
+	virtual void set_use_vsync(bool p_enable);
+	virtual bool is_vsync_enabled() const;
+
 	void run();
 
 	void set_mouse_mode(MouseMode p_mode);

+ 17 - 0
platform/osx/os_osx.mm

@@ -1810,6 +1810,23 @@ Error OS_OSX::move_path_to_trash(String p_dir) {
 	return OK;
 }
 
+void OS_OSX::set_use_vsync(bool p_enable) {
+	CGLContextObj ctx = CGLGetCurrentContext();
+	if (ctx) {
+		GLint swapInterval = p_enable ? 1 : 0;
+		CGLSetParameter(ctx, kCGLCPSwapInterval, &swapInterval);
+	}
+}
+
+bool OS_OSX::is_vsync_enabled() const {
+	GLint swapInterval = 0;
+	CGLContextObj ctx = CGLGetCurrentContext();
+	if (ctx) {
+		CGLGetParameter(ctx, kCGLCPSwapInterval, &swapInterval);
+	}
+	return swapInterval ? true : false;
+}
+
 OS_OSX *OS_OSX::singleton = NULL;
 
 OS_OSX::OS_OSX() {