2012-07-17 11 views
6

मैं ओपनजीएल सुपरबिबल पांचवें संस्करण के माध्यम से पढ़ रहा हूं और वे अपनी कक्षा के माध्यम से ढेर का उपयोग करने पर चर्चा करते हैं। यह सब अच्छा है लेकिन वे उल्लेख करते हैं कि मैट्रिक्स ढेर को हटा दिया गया था। उन्हें बहिष्कृत क्यों किया गया और लोग उनके बजाय क्या उपयोग करते हैं?ओपनजीएल - मैट्रिक्स स्टैक क्यों हटाया गया था और अब लोग क्या उपयोग कर रहे हैं?

उत्तर

2

मैट्रिक्स स्टैक (और बाकी मैट्रिक्स फ़ंक्शंस) को केवल मूल प्रोफ़ाइल में बहिष्कृत किया गया था। संगतता प्रोफ़ाइल में आपको अभी भी उनका उपयोग करने में सक्षम होना चाहिए।

मेरे दृष्टिकोण से इसे हटा दिया गया था क्योंकि अधिकांश इंजन/ढांचे में शेडर्स को मैट्रिस भेजने के लिए कस्टम मैथ कोड और शेडर वर्दी शैली होती है।

हालांकि सरल कार्यक्रम/ट्यूटोरियल के लिए उपयोग करना और कुछ और खोजना बहुत असुविधाजनक है।

मैं उपयोग करने का सुझाव:

+0

मैं [ईजिन] (http://eigen.tuxfamily.org/) की सिफारिश करता हूं। – Arpegius

+2

मैं अपने linmath.h में फेंक देता हूं https://github.com/datenwolf/linmath.h – datenwolf

1

खैर पहली और मुख्य कारण है, मेरे लिए, यह है कि के उदय के साथ प्रोग्राम करने योग्य शेडर्स (ओपनग्ल के तीसरे संस्करण के बाद अनिवार्य होना), जीएल_PROJECTION और GL_MODELVIEW जैसे सभी चर जो स्वचालित रूप से शेडर्स में स्थानांतरित हो जाते हैं उन्हें शेडर्स से हटा दिया जाता है, इसलिए उपयोगकर्ता को अपने मैट्रिक्स को परिभाषित करना होता है शेडर में इसका इस्तेमाल करें। चूंकि आपको वर्दी फ़ंक्शंस का मैन्युअल रूप से मैट्रिक्स भेजना है, इसलिए आपको वास्तव में निश्चित चर की आवश्यकता नहीं है।

2

वे क्यों

पदावनत किया गया क्योंकि कोई भी वास्तव में असली दुनिया ओपन कार्यक्रमों में इस्तेमाल किया। उदाहरण के लिए भौतिकी सिमुलेशन लें: भौतिकी प्रणाली में आपके ऑब्जेक्ट प्लेसमेंट को 4 × 4 मैट्रिक्स के रूप में संग्रहीत किया जाएगा। तो आप बस इसका इस्तेमाल करेंगे। दृश्य ऑब्जेक्ट निर्धारण और एनीमेशन सिस्टम के लिए ही चला जाता है। उन सभी को मैट्रिक्स गणित को किसी भी तरह कार्यान्वित करने की आवश्यकता है, इसलिए ओपनजीएल में इसे रखना अनावश्यक है, क्योंकि ज्यादातर समय पहले से ही मौजूदा मैट्रिस को glLoadMatrix में रखा गया था।

और उनके बजाय लोग क्या उपयोग करते हैं?

क्या वे पहले इस्तेमाल किया: उनके एनीमेशन प्रणाली, भौतिक विज्ञान सिमुलेटर, दृश्य रेखांकन, आदि

9

कारण (कारणों) राजनीतिक, तकनीकी नहीं हैं, और वापस 2000 के दशक के लिए तारीख।

ओपनजीएल 3 पिछला संगतता तोड़ने के लिए तैयार पहला संस्करण था। डिजाइनर विशेषज्ञ उपयोगकर्ताओं, गेम प्रोग्रामर और उच्च अंत विज़ुअलाइज़ेशन कोडर्स के लिए एक एपीआई बनाना चाहते थे जो शेडर्स के बारे में सभी जानते थे और अपना खुद का मैट्रिक्स कोड लिखा था। इरादा यह था कि ओपनजीएल 3 एपीआई वास्तविक हार्डवेयर से काफी निकटता से मेल खाना चाहिए। (यहां तक ​​कि ओपनजीएल 1/2 में भी, मैट्रिक्स स्टैक को आमतौर पर सीपीयू पक्ष पर लागू किया गया था, जीपीयू नहीं।)

एक गेम इंजन प्रोग्रामर दृष्टिकोण से, यह बेहतर था। और हे, अगर आपको हर दो साल में एक नया गेम इंजन विकसित करना है, तो पुराने कोड को फेंकने के बारे में क्या बड़ा सौदा है?

इस डिजाइन प्रक्रिया का परिणाम ओपनजीएल 3/4 कोर प्रोफाइल है।

एक बार "नई पीढ़ी" ओपनजीएल की घोषणा की जाने के बाद, विश्वविद्यालयों और कंपनियों में सभी गैर-विशेषज्ञ विशेषज्ञों को एहसास हुआ कि वे खराब हो जाएंगे। ये लोग हैं (मेरे जैसे) जो 3 डी ग्राफिक्स पढ़ते हैं या अनुसंधान या डिजाइन के लिए उपयोगिता कार्यक्रम लिखते हैं। हमें सादे परिवेश-फैलाने वाले-specular की तुलना में किसी और उन्नत प्रकाश की आवश्यकता नहीं है। हमें अक्सर अलग-अलग स्रोतों से कोड मिश्रण करना होता है, और यह केवल तभी आसान होता है जब हर कोई एक ही मैट्रिक्स, प्रकाश व्यवस्था और टेक्सचरिंग सम्मेलनों का उपयोग कर रहा हो - जैसे ओपनजीएल 2.

इसके अलावा, मैंने सुना है लेकिन नहीं कर सकता सत्यापित करें, बड़ी सीएडी/सीएएम कंपनियों को एहसास हुआ कि वे भी खराब हो जाएंगे। दस साल के विकास से कोड की दो मिलियन लाइनों को फेंकना एक विकल्प नहीं है जब आप भुगतान कर रहे हैं (और अच्छी तरह से भुगतान: क्वाड्रो बनाम जेईफ़ोर्स, या फायर जीएल बनाम राडेन) के लिए कीमतों की तुलना करें।

तो दोनों एनवीआईडीआईए और एटीआई ने घोषणा की कि वे पुराने एपीआई को तब तक समर्थन देंगे जब तक वे कर सकें।

इस दबाव का परिणाम संगतता प्रोफाइल है। और ओपनजीएल एआरबी ने अब महसूस किया है कि जब वे सभी को कोर प्रोफाइल पर स्विच करना चाहते हैं तो यह अभी नहीं होने वाला है: ओपनजीएल 4 में टेस्सेलेशन शेडर्स के लिए एक्सटेंशन स्पेक पढ़ें और यह उल्लेख करता है कि जीएल_PATCHES glBegin के साथ काम करेगा।

+0

धन्यवाद। सॉफ्टवेयर रिलीज और विकास में भी यह बहुत खराब राजनीति है। –

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

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