OS X'te OpenGL ve Fullscreen ile nasıl başa çıkılır?


9

Gelişimimin çoğunu OS X'te yapıyorum ve mevcut oyun projem için bu benim hedef ortamım. Ancak oyun oynarken Windows'ta oynuyorum. Bir Windows oyuncusu olarak, oyunun içinden açık olan son uygulamaya geçiş yaparak Alt + Tab'e alışkınım.

OS XI'de şu anda bunu destekleyen bir oyun bulamıyorum veya bunu mümkün kılmak için bir yol bulamıyorum. Şu anki projem SDL 1.3'e dayanıyor ve cmd + sekmesinin doğrudan uygulamama gönderilen ve işletim sistemi tarafından yakalanmayan bir dizi olduğunu görebiliyorum.

Şimdi ilk denemem, kesinlikle çalışan ancak kullanıcı uygulamaya geri döndüğünde SDL'de gizli bir OpenGL penceresinin geri yüklenememesi dezavantajına sahip olan cmd + sekmesinde oluşturma penceresini gizlemekti. Her şeyden önce, bunun için ateşlenen bir olay yok veya bulamıyorum, ikincisi temel sorun, o uygulama penceresi gizlendiğinde, oyunumun hala aktif bir uygulama olması, sadece pencerenin kaybolduğu.

Bu inanılmaz sinir bozucu.

Alt + sekmesi için windows / linux davranışına nasıl yaklaşacağınız hakkında bir fikriniz var mı?

Yanıtlar:


2

Sorun, burada Apple belgelerinde açıklandığı gibi ekranı yakalamanızdır: https://developer.apple.com/library/mac/#documentation/graphicsimaging/Conceptual/QuartzDisplayServicesConceptual/Articles/DisplayCapture.html

Bu, TÜM klavye komutlarının uygulamanız tarafından durdurulduğu anlamına gelir. Uygulamanıza bağlı olarak bu yaklaşımın avantajları vardır.

Apple dokümanları altta şöyle diyor:

Not: Tam ekran çizimi yapmak için bir ekran yakalamak gerekli değildir. Başka bir yaklaşım, ekranın boyutunu kenarlıksız bir pencereye oluşturmak ve çizmektir. Bu yaklaşım, pencereleme sisteminin tüm özelliklerini kullanmanızı sağlar. Ayrıca işletim sisteminin geri kalanıyla da iyi çalışır ve ekran işlemenin karmaşıklığını azaltır (örneğin, yansıtılmış ekranlar için endişelenmenize gerek yoktur). Bu yaklaşımla, yakalanan bir ekranda kaçırılabilecek hata uyarıları alabilirsiniz. Bu yaklaşımla uygulamaları değiştirmek için Komut-Tab'ı da kullanabilirsiniz. Modern grafik donanımına sahip sistemlerde, tam ekran bir pencerede çizim performansı tam ekran çizim bağlamı kadar hızlıdır.

Yapmanız gereken şey, ekranı yakalamadan openGL görünümünüzü tam ekran yapmaktır. Cocos2d şu anda tam ekran OS X uygulamalarını bu şekilde işler. Cocos2d Mac koduna buradan göz atabilirsiniz: https://github.com/cocos2d/cocos2d-iphone/tree/master-v2/cocos2d/Platforms/Mac

Uygulamaları için özellikle CCDirectorMac.m ve CCGLView.m dosyalarına bakın.

Pencere sisteminin tüm özelliklerini sınırlamadan süreç değiştirme gibi bazı işlevleri seçici olarak sınırlamak istediğinizi belirlerseniz, Apple Kiosk Modu Teknik Notuna bakabilirsiniz: http://developer.apple.com /library/mac/#technotes/KioskMode/Introduction/Introduction.html


1

Mac'teki deneyimim, normalde tam ekran modundan pencereli moda (genellikle CMD + M veya CMD + Return) çıkmak için bir kısayol olmasıdır. Pencereli moda geçtikten sonra, tüm uygulamalarınıza normal şekilde erişebilirsiniz. Pencereli mod ayrıca kullanıcının oyunlarını diğer tüm uygulamaları arasında izlemesine izin verir. Yani sanırım bu tür işlevleri oyununuza uygulayabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.