2010-09-01 19 views
6

मुझे इन कामों के आसपास अपने सिर को लपेटने में परेशानी हो रही है। सबसे पहले, 2 डी गेम में प्रोजेक्शन मैट्रिक्स को बाएं, दाएं, ऊपर, विंडो से मेल खाने के साथ ऑर्थो के रूप में स्थापित किया जाना चाहिए, है ना? लेकिन जब खिड़की का आकार बदलता है, तो क्या मुझे सिर्फ glViewport बदलना चाहिए, प्रक्षेपण मैट्रिक्स नहीं? और मैं पहलू अनुपात कैसे रखूं?ओपनजीएल - ऑर्थो प्रोजेक्शन मैट्रिक्स, glViewport

क्या कोई 2 डी ऑर्थोग्राफिकल गेम में इन दो चीजों के उद्देश्यों को समझा सकता है, ताकि मैं इसे बेहतर समझ सकूं?

ऐसा लगता है कि ओपनजीएल 2 डी सेटअप में बहुत बेकार सामान कर रहा है। जब छवियां पहले से मौजूद हों तो खंडों को रास्टराइज करना और गणना करना, वर्टेक्स निर्देशांक को एनडीसी में परिवर्तित करना केवल उन चीज़ों में परिवर्तित होना चाहिए जिन्हें वे पहले से ही glViewport द्वारा बदलते हैं।

इसके अलावा, विरासत मुक्त ओपनजीएल में हमें कैसे अपना खुद का मैट्रिक्स बनाना है, लेकिन glViewport करता है कि हमारी अपनी गणना नहीं है?

धन्यवाद।

उत्तर

5

में मदद करता है भ्रमित न हों कि आप क्या जीएल के लिए इनपुट और क्या यह करने के लिए आउटपुट।

ऑर्थो मैट्रिक्स की गणना करने के लिए उपयोग किए जाने वाले पैरामीटर वे हैं जो आपके इनपुट से संबंधित हैं। प्रक्षेपण मैट्रिक्स का उत्पादन हमेशा [-1: 1] x [-1: 1] x [-1: 1] घन होता है।

व्यूपोर्ट आपके प्रस्तुत लक्ष्य निर्देशांक में उस घन का अनुवाद करता है। तो आम तौर पर यह है कि आप अपने नए विंडो आकार से मिलान करने के लिए क्या बदलना चाहते हैं (ठीक है, वह और फ्रेमबफर स्वयं)।

हां, जीएल 2 डी प्रतिपादन पथ के लिए बहुत सारी बेकार सामग्री करता है। यह सब के बाद एक 3 डी एपीआई है ...

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

+0

धन्यवाद, मुझे लगता है कि अब मैं समझता हूं, और मैं आउटपुट के साथ इनपुट उलझन में था। एक प्रक्षेपण मैट्रिक्स का उपयोग करना इसे बहुत आसान बनाता है क्योंकि मैं विंडो पिक्सल से मेल खाने वाले वर्टेक्स निर्देशांक का उपयोग करता हूं। यह सामान वास्तव में बेकार नहीं है क्योंकि बनावट के साथ रास्टराइजिंग कोष्ठक का अर्थ है ओपनजीएल उन्हें आपके लिए स्केल कर सकता है, और आप सटीक वर्टेक्स पदों का उपयोग कर सकते हैं और चीज घुमा सकते हैं उदाहरण के लिए, और ओपनजीएल अभी भी इसे करने का सबसे तेज़ तरीका है। क्या मैं सही हू? – mk12

-2

यह सुनिश्चित नहीं है कि आप ओपनजीएल का उपयोग किस भाषा में कर रहे हैं, लेकिन यदि आप इस साइट को सी ++ की तलाश में हैं, तो http://nehe.gamedev.net/ में बहुत कुछ शामिल है और इसमें "हैलो वर्ल्ड" के रूप में सरल से मूलभूत गेम और 3 डी प्रभावों के रूप में ट्यूटोरियल हैं ।

आशा है कि यह

+6

नेहे बहिष्कृत निश्चित फ़ंक्शन पाइपलाइन का उपयोग करके सिखाता है, जिसे मैं उपयोग नहीं करना चाहता (और एक सी ++ विंडोज परिप्रेक्ष्य से भी)। मैं रास्ते में एक मैक पर उद्देश्य सी का उपयोग कर रहा हूँ। और मैं एक विशिष्ट जवाब की तलाश में था। – mk12