2011-12-30 18 views
5

का उपयोग करके अधिकतम विंडो को संभालना हमने हाल ही में जीएलयूटी से एसडीएल तक Bitfighter पोर्ट किया। ऐसा करने के कई फायदे थे, लेकिन विशेष रूप से खिड़की प्रबंधन के क्षेत्र में कुछ कमियां भी थीं।एसडीएल

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

(निम्नलिखित समस्या विंडोज पर लागू होता है, लेकिन अभी तक दूसरे प्लेटफार्म पर परीक्षण नहीं किया गया। क्या मैं नीचे का वर्णन है, विंडोज के लिए संदर्भित हालांकि मैं एक मंच स्वतंत्र समाधान के लिए देख रहा हूँ।)

आमतौर पर, इस महान काम करता है, सिवाय इसके कि जब उपयोगकर्ता टाइटल बार पर डबल क्लिक करके या अधिकतम बटन का उपयोग करके अपनी खिड़की को अधिकतम करते हैं। उस स्थिति में, विंडो आकार बदलने की घटना को स्क्रीन आकार के अनुमानित खिड़की के आकार के साथ बुलाया जाता है (खिड़की के आभूषण के लिए कुछ पिक्सेल घटाएं)। दुर्भाग्यवश, जब विंडो को अधिकतम किया जाता है, तो SDL_SetVideoMode का कोई प्रभाव नहीं पड़ता है (GLUT के विपरीत जो अधिकतम विंडो का आकार बदलने में सक्षम था)। इसके अलावा, एसडीएल_GetVideoInfo के बाद की कॉल के आकार के बारे में रिपोर्ट की गई है, न कि खिड़की के वास्तविक वर्तमान आकार की, इसलिए यह कहना मुश्किल है कि कोशिश करने वाले प्रयासों ने काम किया है या नहीं।

मैं निम्न कोई भी कार्य करने के लिए एक मंच स्वतंत्र तरीके रहा हूँ (प्राथमिकता के घटते क्रम में):

  1. एक विंडो का आकार बदलें के बाद यह अधिकतम गया है
  2. का पता लगाने जब एक खिड़की तो अधिकतम कर दिया गया है कि, मुझे पता है कि मैं इसका आकार बदल नहीं सकता, मैं कम से कम
  3. विंडो को अधिकतम करने से रोक सकता हूं (विंडो शीर्षक पट्टी पर डबल क्लिक अवरुद्ध करें, अधिकतम बटन का उपयोग करें, और विंडो को खींचें स्क्रीन के शीर्ष)

बिटफाइटर सी ++ में लिखा गया है, और हम एसडीएल की नवीनतम आधिकारिक रिलीज का उपयोग कर रहे हैं।

+0

क्या आप एसडीएल 1.3 हेड को आजमाने की स्थिति में हैं? – genpfault

+0

हम हो सकते हैं; इस पर निर्भर करता है कि यह कितना स्थिर है। हम कुछ हफ्तों में रिलीज होने की उम्मीद कर रहे हैं। – Watusimoto

+1

अपने कोड को देखकर, ऐसा लगता है कि आप एसडीएल 2.0 में माइग्रेट हो गए हैं। क्या इससे आपके मुद्दों को ठीक किया गया? – faffy

उत्तर

0

मुझे लगता है कि आप एसडीएल के साथ ओपनजीएल का उपयोग करते हैं, क्योंकि आपने पहले जीएलयूटी का इस्तेमाल किया था। मैं, आप वीडियो एक विशिष्ट आकार करना चाहते हैं कि इस समस्या के लिए किसी भी समाधान पता नहीं, बिंदु 2. exept सिर्फ यह है की तरह एसडीएल-विंडो छोड़ देते हैं, और साथ सही आकार के साथ

glViewport(0, 0, width, height); 

फोन सही अनुपात। उन समाधानों के साथ आपके पास अभी भी आपकी खिड़की में एक काला सीमा होगी, लेकिन यह केवल उतना ही दिखाता है जितना आप चाहते हैं। एसडीएल 2.0 (ऐसा लगता है जो आपके पास पहले से)

एसडीएल 2.0 विंडो प्रबंधन के लिए एक बेहतर एपीआई प्रदान करता है करने के लिए)

1

माइग्रेट, (पहले 2 तर्क के साथ आप भी विंडो में व्यूपोर्ट की स्थिति सेट कर सकते हैं) (यह वास्तव में एक प्रदान करता है)। एसडीएल 2.0 (विशेष रूप से लिनक्स पक्ष पर) में विंडोज प्रबंधन में अभी भी कई बग हैं, लेकिन यह 1.2 दिनों से काफी सुधार हुआ है।

संबंधित मुद्दे