2014-10-22 1 views
2

C에서 Cinema (또는 어떤 유형의) 디스플레이를 만들 수있는 방법이 있습니까?시뮬레이션 화면

나는 몇 가지 코드를 본 적이 있지만 거의 문서가있다. IOFramebuffer을 구현

답변

4

는 등 EWFrameBuffer이하는 것처럼 그래픽 드라이버를 작성하기위한 길을 가야하는 것입니다. 다양한 버전에서 약간의 파손이 있지만, 시행 착오와 함께 망막 해상도를 포함하여 잘 작동하는 것이 가능합니다. 하드웨어 가속은 별도입니다.

이전 버전의 OSX에서는 드라이버가 kext와 함께 구현 된 CFPlugin 번들을 제공 한 경우 2D 가속 용으로 IOGraphicsAcceleratorInterface을 사용했습니다.

나는 요세미티에 그것을 파악하지 않은

; 2D 가속을 사용하지 않는 것 같습니다. 사태를 악화 시키려면 요세미티의 소프트웨어 렌더링 성능도 이전 릴리스보다 상당히 낮습니다. 나는 이것 (헤드리스 맥 미니, VM의 OS X, 가상 디스플레이 등)의 영향을받는 사람들에게 애플과 함께 레이더 파일을 보내도록 권장한다. 나는 이미 그렇게 해왔지만 더 많은 사람들이 불평할수록 더 많은 일을하게 될 것입니다.

3 차원 가속 (OpenGL을) API는 모든 버전에 개인 있습니다. 애플과 관련 회사가 협력하여 개발 한 것으로 보이는 Intel/AMD/nVidia GPU 드라이버를 고려하지 않는다면, 제 3 자 구현, 오픈 소스 또는 다른 방법을 알지 못합니다.

UPDATE : 그것은 밝혀 당신의 IOFramebuffer 드라이버가 올바르게 세로 빈 인터럽트를 구현하지 않는 8fps에 대한 에 요세미티의 WindowServer 한계 프레임 속도. 당신의 드라이버가 이미 그렇게하지 않는 경우에 따라서, 인터럽트 유형 kIOFBVBLInterruptType와 방법 registerForInterruptType(), unregisterInterruptsetInterruptState 작업을 구현하고, 콜백에게 당신이 전체 이미지를 방출 완료 할 때마다 생성합니다. 자세한 내용은 장치에 따라 다릅니다. 이것은 하드웨어 가속 및 렌더링 결함 문제를 해결하지는 않지만 성능을 다소 향상시킵니다 (CPU로드가 높아짐에 따라).

+1

당신은 (보고 실제 크기로 나눈 픽셀 정도)> = 150DPI와 디스플레이를 시뮬레이션 할 필요가, 당신은 문제의 디스플레이 모드에'kDisplayModeValidForHiResFlag' 플래그를 설정해야합니다. 디스플레이의 글리치가 나올 수있는 유효한 EDID 또는 시스템 환경 설정을 제공해야했지만 Mountain Lion에 있었기 때문에 수정되었을 수 있습니다. – pmdj