2011-08-04 17 views
8

मैं ओपनजीएल, एसडीएल पर एक पुस्तक पढ़ रहा हूं, और कुछ ओपनजीएल दस्तावेज पढ़ चुके हैं। मैंने यह पोस्ट भी पढ़ा है: What does glLoadIdentity() do in OpenGL?GlMoadrixMode को प्रत्येक कॉल के बाद glLoadIdentity को क्यों कॉल किया जाना चाहिए?

मैं gllping हूँ glloadIdentity() करता है, और इसका उपयोग सामान्य अर्थ में क्यों किया जाता है (वर्तमान मैट्रिक्स को वापस अपने मूल स्थिति में वापस करने के लिए)। मुझे नहीं पता कि मैं इसे अपने मूल राज्य में क्यों लौट रहा हूं। उदाहरण के लिए:

glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 

glOrtho(0.0f, 640, 480, 0.0f, -1.0f, 1.0f); 

glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 

मैं बिल्कुल यकीन है कि क्यों glLoadIdentity() glMatrixMode की प्रत्येक कॉल के बाद कहा जाता हो गया है नहीं कर रहा हूँ।

उत्तर

13

When to call glMatrixMode() - 1 जवाब समझाने की कोशिश करता:

glLoadIdentity() आम तौर पर एक मैट्रिक्स मोड परिवर्तन के तुरंत बाद कहा जाता है ताकि आप शुरू कर रहे हैं "फ्रेश" यदि आप करेंगे। मैट्रिक्स ऐसे gluPerspective(), glOrtho(), glFrustum(), glRotate(), glMultMatrix(), glTranslate() के रूप में बदल देती है संचयी संचालन क्योंकि वे आप जटिल 3 डी दुनिया अंतरिक्ष वर्णन करने के लिए अनुमति देने के लिए कुल बदल देती है या अपने ओपन देखने वर्णन करने के लिए कर रहे हैं मात्रा। उदाहरण: यदि मैं + एक्स दिशा में अनुवादित घन चाहता हूं तो ज़ेड अक्ष के चारों ओर घूमता हुआ मैं एक glRotate() को एक gltranslate() के बाद जारी करता हूं।

glLoadIdentity() पहचान मैट्रिक्स के साथ मैट्रिक्स (वर्तमान मैट्रिक्स मोड के) को मिटा देता है, इसलिए glLPerspective() glloadIdentity() द्वारा glloadIdentity() पर एक कॉल के बराबर है। दूसरे शब्दों में, वह अनुक्रम अनौपचारिक है।

+1

बिल्कुल सही, है कि इसका जवाब ओर इशारा करते हुए के लिए धन्यवाद। मैं अगली बार खोदूँगा। –

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

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