2014-05-06 7 views
24

यह पोस्ट LIBGDX और Box2D के बीच उचित रूप से प्रस्तुत करने के तरीके के बारे में जानने के इच्छुक पद से संबंधित है। आगे बढ़ने से पहले मुझे व्यूपोर्ट को अच्छी तरह से समझना पड़ा।
अधिक कोड/पोस्ट रीडिंग के बाद, मुझे लगा कि "व्यूपोर्ट" का अर्थ "कैमरे के एक लेंस का आयत खोलना था जो LIBGDX की गेम दुनिया को देखता है, जहां मैं इसे देखने के लिए दुनिया के बारे में इसे स्थानांतरित कर सकता हूं"। लेकिन, और पढ़ने के बाद, मुझे वास्तविक अर्थ के करीब कहीं भी नहीं लग रहा था।
मैंने LIBGDX विकी पढ़ी है, और ओपनजीएल दस्तावेज में पढ़ा है, जो व्यूपोर्ट को दो अलग-अलग चीजों के रूप में समझाता है।LIBGDX: "व्यूपोर्ट" क्या है?

LIBGDX विकी:

"व्यूपोर्ट स्क्रीन जहां 3D दृश्य का अनुमान है की एक आयताकार अवलोकन क्षेत्र यह 2 आयामी विमान को 3 आयामी वस्तुओं मानचित्रण से ज्यादा कुछ नहीं है।।"

ओपन: "। व्यूपोर्ट उपलब्ध स्क्रीन क्षेत्र है जिसमें दृश्य मैप किया गया है का आकार यह संकेत"

Stackoverflow:

"... यह विभिन्न संदर्भों में कई परिभाषाएं हैं ...": '(

मैं मंच पदों और ट्यूटोरियल के दसियों पढ़ने की कोशिश की है। लेकिन, दुर्भाग्यवश लगभग सभी लोग इसमें कूदते हैं जैसे कि "व्यूपोर्ट" इतनी प्राचीन अवधारणा है कि हर कोई समझता है और जानता है।
मुझे पता है कि मुझे इस पूरी तरह से मूल प्रश्न के लिए बहुत सारी गर्मी मिल जाएगी। कृपया आग न करें, मैं पूछ रहा हूं क्योंकि मैं वास्तव में एक नहीं जानता वास्तव में मदद की ज़रूरत है।

वैसे भी, वास्तविक प्रश्न में।

LIBGDX संदर्भ में "व्यूपोर्ट" क्या है?

+4

उत्कृष्ट क्यू। यह दी गई चीज़ों का प्रकार है, लेकिन जब आप उदाहरणों के माध्यम से ट्रैवल करते हैं तो आप महसूस करते हैं कि मूल घटकों की समझ में मौलिक त्रुटियों के कारण लोग घटकों का दुरुपयोग करने के लिए हैकिंग कर रहे हैं। – RichieHH

उत्तर

25

यह आपके द्वारा उपयोग किए जा रहे लिबजीडीएक्स के संस्करण पर निर्भर करता है। LibGDX 1.0.0 के साथ Viewport कक्षा शुरू की गई थी और शायद नवीनतम ट्यूटोरियल और लेखों का अर्थ यह है कि जब वे "व्यूपोर्ट्स" के बारे में बात करते हैं।

  • एक कैमरा
  • ओपन व्यूपोर्ट

एक कैमरा के व्यूपोर्ट को परिभाषित करता है कि आप कितना अपने खेल दुनिया के देखना चाहता हूँ के व्यूपोर्ट:

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

ओपनजीएल व्यूपोर्ट उस क्षेत्र को परिभाषित करता है जहां कैमरे के दृश्य को मैप किया जाना चाहिए। डिफॉल्ट रूप से डेस्कटॉप ऑपरेटिंग सिस्टम पर व्यूपोर्ट आपकी विंडो के आकार का 100% है। लेकिन यह भी अलग हो सकता है। LibGDX 1.0 के साथ FitViewport।0 उस व्यूपोर्ट को स्केल कर सकता है ताकि यह "वर्चुअल व्यूपोर्ट" का पहलू अनुपात रखता है जिसे आप परिभाषित करते हैं (जो वास्तव में कैमरा का व्यूपोर्ट है, जिसे Viewport क्लास द्वारा प्रबंधित किया जा रहा है)। इसका अर्थ यह है कि यदि विंडो का पहलू अनुपात Viewport (वर्चुअल) पहलू अनुपात से मेल नहीं खाता है, तो ओपनजीएल व्यूपोर्ट को छोटे आकार में सेट किया जाएगा और ब्लैक बार दिखाई देंगे। तो आप इसे अपने डेस्कटॉप पर वास्तविक विंडो और कैमरे के बीच एक और परत की तरह सोच सकते हैं। यह परत आपके कैमरे और स्केल का आउटपुट लेती है जो आपके डेस्कटॉप विंडो के भीतर निर्धारित आकार में होती है।

+0

उस शानदार स्पष्टीकरण के लिए धन्यवाद। क्या 1.0.0 संस्करण से पहले Libgdx में व्यूपोर्ट का अर्थ/उपयोग/परिभाषा बदल गई थी? – coffeenet

+0

संस्करण 1.0.0 से पहले यह केवल कैमरा का व्यूपोर्ट और ओपनजीएल व्यूपोर्ट था, क्योंकि 'व्यूपोर्ट' क्लास जो दोनों का प्रबंधन करता था, अभी तक मौजूद नहीं था। – noone

+0

तो LIBGDX के नवीनतम संस्करण में, camera.viewportWidth/height & stage.setViewport() उसी अवधारणा का पालन करें जैसा आपने दयालु समझाया है, है ना? और, कैमरा सेट कर रहा है .viewportWidth/ऊंचाई stage.setViewport() को सेट करने जैसा ही है? – coffeenet