1) ऑब्जेक्ट स्पेस ऑब्जेक्ट के मूल के सापेक्ष ऑब्जेक्ट के शिखर है। एक 1x1x1 घन के मामले में, अपने कोने होगा: जहां किसी चीज़ अपनी दुनिया में है
(0.5, 0.5, 0.5)
(-0.5, 0.5, 0.5)
(0.5, -0.5, 0.5)
(-0.5, -0.5, 0.5)
आदि
2) विश्व जगह नहीं है। यदि आप यह क्यूब (15, 10)
पर होना चाहते हैं, तो आप एक अनुवाद मैट्रिक्स बनायेंगे, जब प्रत्येक चरम के साथ गुणा किया जाता है, तो (15, 10)
के आसपास आपके शिखर को केंद्रित करेगा। उदाहरण के लिए, पहला चरम (15.5, 10.5, 0.5)
बन जाएगा। वस्तु से विश्व अंतरिक्ष में जाने के लिए मैट्रिक्स को "मॉडल" मैट्रिक्स कहा जाता है।
3) आई स्पेस (कभी-कभी कैमरा स्पेस कहा जाता है) दर्शक के स्थान से संबंधित दुनिया है।चूंकि यह एक मैट्रिक्स होना चाहिए क्योंकि प्रत्येक चरम सीमा से गुणा किया जाता है, यह तकनीकी रूप से कैमरे के अभिविन्यास के विपरीत है। यही है, अगर आप (0, 0, -10)
पर कैमरा चाहते हैं, तो आपका "व्यू" मैट्रिक्स (0, 0, 10)
का अनुवाद होना चाहिए। इस तरह दुनिया में सभी वस्तुओं को आगे 10 इकाइयां हैं, ऐसा लगता है कि आप पिछली 10 इकाइयां हैं।
4) प्रक्षेपण स्थान यह है कि हम एक दृश्य के लिए एक सही परिप्रेक्ष्य कैसे लागू करते हैं (माना जाता है कि आप एक ऑर्थोग्राफिक प्रक्षेपण का उपयोग नहीं कर रहे हैं)। यह लगभग हमेशा एक निराशा द्वारा प्रतिनिधित्व किया जाता है, और this article बता सकता है कि मैं इससे बेहतर कर सकता हूं। अनिवार्य रूप से आप एक और skewed अंतरिक्ष पर 3 डी अंतरिक्ष मैपिंग कर रहे हैं।
ओपनजीएल तब क्लिप स्पेस और स्क्रीन स्पेस को संभालता है।
यह डिफ़ॉल्ट रूप से GL_MODELVIEW
झंडे पर काम करता है, लेकिन यह है कि दूसरे चरण है - दुनिया अंतरिक्ष। क्या इसका मतलब है कि glVertex3f()
ऑब्जेक्ट स्पेस में त्रिकोण बनाता है?
आप वस्तु अंतरिक्ष हमेशा में glVertex3f()
साथ कोने की स्थापना की। (यह वास्तव में यह करने के लिए एक बहुत पुरानी और धीमी गति से रास्ता है, लेकिन वास्तव में इस सवाल की बात नहीं है)
जब आप GL_MODELVIEW
निर्धारित करते हैं, यह केवल मॉडल मैट्रिक्स (जो glLoadMatrix
साथ हेरफेर किया जा सकता बदल रहा है, glTranslate
, glRotate
, glScale
, आदि)।
लाइन लाइन द्वारा आपके कोड का टुकड़ा निम्नलिखित कार्य कर रही:
- सभी परिवर्तनों अब प्रक्षेपण मैट्रिक्स को प्रभावित करने दिया जाएगा।
- पुराने प्रक्षेपण मैट्रिक्स को साफ़ करें और पहचान मैट्रिक्स के साथ इसे प्रतिस्थापित करें।
- संपूर्ण स्क्रीन को व्यूपोर्ट के रूप में उपयोग करें।
- डब्ल्यू/एच के एक पहलू अनुपात के साथ 45 डिग्री ऊर्ध्वाधर क्षेत्र दृश्य के साथ प्रक्षेपण मैट्रिक्स को सेट करें, निकट-क्लिप विमान 1 इकाई दूर, और दूर-दराज के विमान 100 इकाइयां दूर करें।
- सभी परिवर्तन अब मॉडलव्यू मैट्रिक्स को फिर से प्रभावित कर रहे हैं।
जेड अक्ष पहले से मौजूद है, यह केवल प्रक्षेपण मैट्रिक्स सेट करता है जो आपको परिप्रेक्ष्य देता है, ओपनजीएल को प्रस्तुत करने के लिए पूरी विंडो का उपयोग करने के लिए कहता है। यह ऑब्जेक्ट स्पेस नहीं है, वैसे ही आप ऑब्जेक्ट स्पेस को प्रोजेक्शन स्पेस में बदलते हैं।
इसके अलावा एक साइड नोट, आप वास्तव में पुराने ओपनजीएल (1 99 2 पुराने) का उपयोग कर रहे हैं। GlTranslate, आदि बहुत समय पहले बहिष्कृत थे और अब एपीआई से हटा दिए गए हैं। एकमात्र कारण आप अभी भी उनका उपयोग कर सकते हैं क्योंकि ड्राइवर उन्हें संगतता के लिए वहां रखते हैं। मैं आपको आधुनिक (3.0+) ओपनजीएल का उपयोग करने की सलाह दूंगा। आधुनिक ग्राफिक्स पाइपलाइन तत्काल मोड (ग्लोबिन, ग्लवटेक्स, ग्लेंड) की तुलना में तीव्रता के कई आदेश हैं।
मुझे आशा है कि आप वास्तव में ऑब्जेक्ट ज्यामिति में टाइप नहीं करेंगे (बहुत सरल लोगों को छोड़कर)। आपको उन्हें एक फाइल से लोड करना चाहिए। – datenwolf