OS X에서 OpenGL 및 전체 화면을 처리하는 방법


9

OS X에서 대부분의 개발 작업을 수행하고 있으며 현재 게임 프로젝트의 경우 이것이 대상 환경입니다. 그러나 게임을 할 때 Windows에서 게임을합니다. Windows 게이머로서 게임 내에서 마지막으로 열린 응용 프로그램으로 Alt + Tab을 전환하는 데 익숙합니다.

OS XI에서는 현재이를 지원하는 게임을 찾을 수 없으며 가능한 방법을 찾을 수도 없습니다. 현재 프로젝트는 SDL 1.3을 기반으로하며 cmd + tab이 내 응용 프로그램으로 직접 전송되고 운영 체제에서 가로 채지 않는 시퀀스임을 알 수 있습니다.

이제 첫 번째 시도는 확실히 작동하는 cmd + tab에서 렌더링 창을 숨기는 것이었지만 사용자가 응용 프로그램을 다시 탭하면 SDL의 숨겨진 OpenGL 창을 복원 할 수 없다는 단점이 있습니다. 우선, 그 이벤트가 발생하지 않았거나 찾을 수 없습니다. 둘째, 핵심 문제는 해당 응용 프로그램 창이 숨겨져있을 때 내 게임이 여전히 활성 응용 프로그램이며 창이 사라 졌다는 것입니다.

정말 귀찮습니다.

Alt + Tab의 Windows / Linux 동작을 근사하는 방법에 대한 아이디어가 있습니까?

답변:


2

문제는 Apple 설명서 ( https://developer.apple.com/library/mac/#documentation/graphicsimaging/Conceptual/QuartzDisplayServicesConceptual/Articles/DisplayCapture.html)에 설명 된대로 디스플레이를 캡처하고 있다는 것입니다.

이것은 모든 키보드 명령이 응용 프로그램에 의해 차단된다는 것을 의미합니다. 응용 프로그램에 따라이 방법에는 장점이 있습니다.

애플 문서는 하단에 말합니다.

참고 : 전체 화면 그리기를 수행하기 위해 디스플레이를 캡처 할 필요는 없습니다. 또 다른 방법은 디스플레이 크기의 경계선없는 창을 만들어서 그리는 것입니다. 이 방법을 사용하면 윈도우 시스템의 모든 기능을 사용할 수 있습니다. 또한 나머지 운영 체제에서도 잘 작동하며 디스플레이 처리의 복잡성을 줄입니다 (예 : 미러 된 디스플레이에 대해 걱정할 필요가 없습니다). 이 방법을 사용하면 캡처 된 디스플레이에서 놓칠 수있는 오류 경고를받을 수 있습니다. Command-Tab을 사용하여이 방법으로 응용 프로그램을 변경할 수도 있습니다. 최신 그래픽 하드웨어가 장착 된 시스템에서 전체 화면 창의 그리기 성능은 전체 화면 그리기 컨텍스트만큼 빠릅니다.

해야 할 일은 디스플레이를 캡처하지 않고 openGL보기를 전체 화면으로 만드는 것입니다. 이것이 cocos2d가 현재 전체 화면 OS X 응용 프로그램을 처리하는 방법입니다. https://github.com/cocos2d/cocos2d-iphone/tree/master-v2/cocos2d/Platforms/Mac 에서 cocos2d Mac 코드를 찾아 볼 수 있습니다.

CCDirectorMac.m 및 CCGLView.m에서 구현 방법을 구체적으로 살펴보십시오.

윈도우 시스템의 모든 기능을 제한하지 않고 프로세스 전환과 같은 일부 기능을 선택적으로 제한하려는 경우 Apple Kiosk Mode 기술 노트를 참조 하십시오. http://developer.apple.com /library/mac/#technotes/KioskMode/Introduction/Introduction.html


1

Mac에서의 경험은 일반적으로 전체 화면 모드를 창 모드 (일반적으로 CMD + M 또는 CMD + Return)로 끝내는 바로 가기가 있다는 것입니다. 창 모드로 전환하면 모든 응용 프로그램에 정상적으로 액세스 할 수 있습니다. 윈도우 모드는 또한 사용자가 다른 모든 앱에서 게임을 모니터링 할 수있게 해줍니다. 이런 종류의 기능을 게임에 구현할 수 있다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.