ओएस एक्स पर ओपनजीएल और फुलस्क्रीन के साथ कैसे व्यवहार करें


9

मैं अपना अधिकांश विकास OS X पर करता हूं और अपने वर्तमान गेम प्रोजेक्ट के लिए यह मेरा लक्ष्य वातावरण है। हालांकि जब मैं गेम खेलता हूं तो विंडोज पर खेलता हूं। एक विंडोज़ गेमर के रूप में मैं ऑल्ट + टैब के लिए उपयोग किया जाता हूं जो खेल के भीतर से अंतिम एप्लिकेशन पर स्विच होता है जो खुला था।

OS XI पर वर्तमान में या तो एक गेम नहीं मिल रहा है जो इसका समर्थन करता है और न ही मैं इसे संभव बनाने का कोई तरीका खोज सकता हूं। मेरी वर्तमान परियोजना SDL 1.3 पर आधारित है और मैं देख सकता हूं कि cmd + टैब एक अनुक्रम है जिसे सीधे मेरे आवेदन पर भेजा जाता है और ऑपरेटिंग सिस्टम द्वारा अवरोधन नहीं किया जाता है।

अब मेरा पहला प्रयास cmd + टैब पर रेंडरिंग विंडो को छुपाना था, जो निश्चित रूप से काम करता है, लेकिन इसका नुकसान यह है कि एसडीएल में एक छिपी हुई ओपन विंडो को तब बहाल नहीं किया जा सकता जब उपयोगकर्ता एप्लिकेशन पर वापस आ जाता है। सबसे पहले, इसके लिए कोई घटना नहीं हुई है या मैं इसे नहीं ढूंढ सकता हूं, दूसरी बात यह है कि मुख्य समस्या यह है कि जब उस एप्लिकेशन विंडो को छिपाया जाता है, तो मेरा गेम अभी भी सक्रिय एप्लिकेशन है, बस वह विंडो गायब हो गई है।

यह अविश्वसनीय कष्टप्रद है।

किसी भी विचार कैसे alt / टैब के लिए विंडोज़ / लिनक्स व्यवहार का अनुमान लगाया जाए?

जवाबों:


2

मुद्दा यह है कि आप प्रदर्शन को कैप्चर कर रहे हैं, जैसा कि यहां Apple प्रलेखन में वर्णित है: https://developer.apple.com/library/mac/#documentation/graphicsimaging/Conceptual/QuartzDisplayServicesCceptive/Articles/DisplayCapture.html

इसका मतलब है कि सभी कीबोर्ड कमांड आपके एप्लिकेशन द्वारा इंटरसेप्टेड हैं। आपके आवेदन के आधार पर, इस दृष्टिकोण के फायदे हैं।

Apple डॉक्स कहते हैं, नीचे:

नोट: फुल-स्क्रीन ड्राइंग करने के लिए डिस्प्ले पर कब्जा करना आवश्यक नहीं है। एक और तरीका यह है कि डिस्प्ले के आकार की सीमा रहित खिड़की को बनाना और खींचना। यह दृष्टिकोण आपको विंडोिंग सिस्टम की सभी विशेषताओं का उपयोग करने की अनुमति देता है। यह बाकी ऑपरेटिंग सिस्टम के साथ भी अच्छा खेलता है, और यह डिस्प्ले हैंडलिंग की जटिलता को कम करता है (उदाहरण के लिए, आपको मिरर किए गए डिस्प्ले के बारे में चिंता करने की ज़रूरत नहीं है)। इस दृष्टिकोण के साथ, आप त्रुटि अलर्ट प्राप्त कर सकते हैं जो कैप्चर किए गए डिस्प्ले के साथ छूट सकते हैं। आप इस दृष्टिकोण के साथ एप्लिकेशन बदलने के लिए कमांड-टैब का भी उपयोग कर सकते हैं। आधुनिक ग्राफिक्स हार्डवेयर वाले सिस्टम में, एक पूर्ण-स्क्रीन विंडो में ड्राइंग प्रदर्शन लगभग पूर्ण-स्क्रीन ड्राइंग संदर्भ के रूप में तेज़ है।

प्रदर्शन को कैप्चर किए बिना आपको अपनी ओपन-स्क्रीन दृश्य पूर्ण स्क्रीन बनाने की आवश्यकता है। इस प्रकार cocos2d वर्तमान में पूर्ण स्क्रीन OS X अनुप्रयोगों को संभालता है। आप यहाँ cocos2d Mac के लिए कोड ब्राउज़ कर सकते हैं: https://github.com/cocos2d/cocos2d-iphone/tree/master-v2/cocos2d/Platforms/Mac

उनके कार्यान्वयन के लिए विशेष रूप से CCDirectorMac.m और CCGLView.m में देखें।

यदि आप यह निर्धारित करते हैं कि आप चुनिंदा कार्यों में से कुछ को सीमित करना चाहते हैं, जैसे कि प्रोसेस स्विचिंग, विंडोिंग सिस्टम की सभी विशेषताओं को सीमित किए बिना, आप Apple कियोस्क मोड तकनीकी नोट पर देख सकते हैं: http://developer.apple.com /library/mac/#technotes/KioskMode/Introduction/Introduction.html


1

मैक पर मेरा अनुभव यह है कि विंडो मोड (आमतौर पर सीएमडी + एम या सीएमडी + रिटर्न) में फुलस्क्रीन मोड से बाहर निकलने का एक शॉर्टकट है। एक बार जब आप विंडो मोड में आ जाते हैं तो आप अपने सभी एप्लिकेशन को सामान्य रूप से एक्सेस कर सकते हैं। विंडो मोड भी अच्छी तरह से उपयोगकर्ता को उनके सभी अन्य ऐप्स के बीच उनके खेल की निगरानी करने की अनुमति देता है। इसलिए मुझे लगता है कि आप इस प्रकार की कार्यक्षमता को अपने खेल में लागू कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.