मैं ओपनजीएल सुपरबिबल पांचवें संस्करण के माध्यम से पढ़ रहा हूं और वे अपनी कक्षा के माध्यम से ढेर का उपयोग करने पर चर्चा करते हैं। यह सब अच्छा है लेकिन वे उल्लेख करते हैं कि मैट्रिक्स ढेर को हटा दिया गया था। उन्हें बहिष्कृत क्यों किया गया और लोग उनके बजाय क्या उपयोग करते हैं?ओपनजीएल - मैट्रिक्स स्टैक क्यों हटाया गया था और अब लोग क्या उपयोग कर रहे हैं?
उत्तर
मैट्रिक्स स्टैक (और बाकी मैट्रिक्स फ़ंक्शंस) को केवल मूल प्रोफ़ाइल में बहिष्कृत किया गया था। संगतता प्रोफ़ाइल में आपको अभी भी उनका उपयोग करने में सक्षम होना चाहिए।
मेरे दृष्टिकोण से इसे हटा दिया गया था क्योंकि अधिकांश इंजन/ढांचे में शेडर्स को मैट्रिस भेजने के लिए कस्टम मैथ कोड और शेडर वर्दी शैली होती है।
हालांकि सरल कार्यक्रम/ट्यूटोरियल के लिए उपयोग करना और कुछ और खोजना बहुत असुविधाजनक है।
मैं उपयोग करने का सुझाव:
- GLM (http://glm.g-truc.net/)
- बहुत सरल गणित lib (vsml)
खैर पहली और मुख्य कारण है, मेरे लिए, यह है कि के उदय के साथ प्रोग्राम करने योग्य शेडर्स (ओपनग्ल के तीसरे संस्करण के बाद अनिवार्य होना), जीएल_PROJECTION और GL_MODELVIEW जैसे सभी चर जो स्वचालित रूप से शेडर्स में स्थानांतरित हो जाते हैं उन्हें शेडर्स से हटा दिया जाता है, इसलिए उपयोगकर्ता को अपने मैट्रिक्स को परिभाषित करना होता है शेडर में इसका इस्तेमाल करें। चूंकि आपको वर्दी फ़ंक्शंस का मैन्युअल रूप से मैट्रिक्स भेजना है, इसलिए आपको वास्तव में निश्चित चर की आवश्यकता नहीं है।
वे क्यों
पदावनत किया गया क्योंकि कोई भी वास्तव में असली दुनिया ओपन कार्यक्रमों में इस्तेमाल किया। उदाहरण के लिए भौतिकी सिमुलेशन लें: भौतिकी प्रणाली में आपके ऑब्जेक्ट प्लेसमेंट को 4 × 4 मैट्रिक्स के रूप में संग्रहीत किया जाएगा। तो आप बस इसका इस्तेमाल करेंगे। दृश्य ऑब्जेक्ट निर्धारण और एनीमेशन सिस्टम के लिए ही चला जाता है। उन सभी को मैट्रिक्स गणित को किसी भी तरह कार्यान्वित करने की आवश्यकता है, इसलिए ओपनजीएल में इसे रखना अनावश्यक है, क्योंकि ज्यादातर समय पहले से ही मौजूदा मैट्रिस को glLoadMatrix
में रखा गया था।
और उनके बजाय लोग क्या उपयोग करते हैं?
क्या वे पहले इस्तेमाल किया: उनके एनीमेशन प्रणाली, भौतिक विज्ञान सिमुलेटर, दृश्य रेखांकन, आदि
कारण (कारणों) राजनीतिक, तकनीकी नहीं हैं, और वापस 2000 के दशक के लिए तारीख।
ओपनजीएल 3 पिछला संगतता तोड़ने के लिए तैयार पहला संस्करण था। डिजाइनर विशेषज्ञ उपयोगकर्ताओं, गेम प्रोग्रामर और उच्च अंत विज़ुअलाइज़ेशन कोडर्स के लिए एक एपीआई बनाना चाहते थे जो शेडर्स के बारे में सभी जानते थे और अपना खुद का मैट्रिक्स कोड लिखा था। इरादा यह था कि ओपनजीएल 3 एपीआई वास्तविक हार्डवेयर से काफी निकटता से मेल खाना चाहिए। (यहां तक कि ओपनजीएल 1/2 में भी, मैट्रिक्स स्टैक को आमतौर पर सीपीयू पक्ष पर लागू किया गया था, जीपीयू नहीं।)
एक गेम इंजन प्रोग्रामर दृष्टिकोण से, यह बेहतर था। और हे, अगर आपको हर दो साल में एक नया गेम इंजन विकसित करना है, तो पुराने कोड को फेंकने के बारे में क्या बड़ा सौदा है?
इस डिजाइन प्रक्रिया का परिणाम ओपनजीएल 3/4 कोर प्रोफाइल है।
एक बार "नई पीढ़ी" ओपनजीएल की घोषणा की जाने के बाद, विश्वविद्यालयों और कंपनियों में सभी गैर-विशेषज्ञ विशेषज्ञों को एहसास हुआ कि वे खराब हो जाएंगे। ये लोग हैं (मेरे जैसे) जो 3 डी ग्राफिक्स पढ़ते हैं या अनुसंधान या डिजाइन के लिए उपयोगिता कार्यक्रम लिखते हैं। हमें सादे परिवेश-फैलाने वाले-specular की तुलना में किसी और उन्नत प्रकाश की आवश्यकता नहीं है। हमें अक्सर अलग-अलग स्रोतों से कोड मिश्रण करना होता है, और यह केवल तभी आसान होता है जब हर कोई एक ही मैट्रिक्स, प्रकाश व्यवस्था और टेक्सचरिंग सम्मेलनों का उपयोग कर रहा हो - जैसे ओपनजीएल 2.
इसके अलावा, मैंने सुना है लेकिन नहीं कर सकता सत्यापित करें, बड़ी सीएडी/सीएएम कंपनियों को एहसास हुआ कि वे भी खराब हो जाएंगे। दस साल के विकास से कोड की दो मिलियन लाइनों को फेंकना एक विकल्प नहीं है जब आप भुगतान कर रहे हैं (और अच्छी तरह से भुगतान: क्वाड्रो बनाम जेईफ़ोर्स, या फायर जीएल बनाम राडेन) के लिए कीमतों की तुलना करें।
तो दोनों एनवीआईडीआईए और एटीआई ने घोषणा की कि वे पुराने एपीआई को तब तक समर्थन देंगे जब तक वे कर सकें।
इस दबाव का परिणाम संगतता प्रोफाइल है। और ओपनजीएल एआरबी ने अब महसूस किया है कि जब वे सभी को कोर प्रोफाइल पर स्विच करना चाहते हैं तो यह अभी नहीं होने वाला है: ओपनजीएल 4 में टेस्सेलेशन शेडर्स के लिए एक्सटेंशन स्पेक पढ़ें और यह उल्लेख करता है कि जीएल_PATCHES glBegin के साथ काम करेगा।
धन्यवाद। सॉफ्टवेयर रिलीज और विकास में भी यह बहुत खराब राजनीति है। –
- 1. लोग यमन का उपयोग कैसे कर रहे हैं?
- 2. लोग अभी भी आरएसएस फ़ीड क्यों बना रहे हैं?
- 3. .NET 3.5 11/07 में प्रकाशित किया गया था .NET 3.0 11/06 में। अधिकांश लोग अभी भी .NET 2.0 का उपयोग क्यों कर रहे हैं?
- 4. लोग अपने कोड में शून्य के बजाय जादू मूल्यों का उपयोग क्यों कर रहे हैं?
- 5. लोग रेलवे का परीक्षण कैसे कर रहे हैं 3.1 + force_ssl?
- 6. 'डाला' और 'हटाया गया' टेबल
- 7. आधुनिक ओपनजीएल: वीबीओ, जीएलएम और मैट्रिक्स स्टैक्स
- 8. जावास्क्रिप्ट पुस्तकालयों को संकलित करने के लिए सभी लोग नोड.जेएस और एनपीएम का उपयोग क्यों कर रहे हैं?
- 9. ओपनजीएल में मैट्रिक्स स्टैक का वर्तमान आकार कैसे प्राप्त करूं?
- 10. System.Net.WebException: अनुरोध निरस्त कर दिया गया था: अनुरोध रद्द कर दिया गया था
- 11. ओपनजीएल मैट्रिक्स प्रारूप सही?
- 12. मैट्रिक्स गठबंधन नहीं कर रहे हैं त्रुटि: अजगर SciPy fmin_bfgs
- 13. क्या हटाया गया हैअनुम्प्लेशन = नहीं?
- 14. ओपनसीवी: ओपनजीएल मॉडलव्यू मैट्रिक्स
- 15. लोग अपने ऐप के साथ Google ऐप-इंजन ऐप्स का उपयोग कैसे कर रहे हैं?
- 16. छुपा तरीकों के दौरान "नया" क्यों उपयोग कर रहे हैं?
- 17. इसका उपयोग कर रहे हैं?
- 18. कैसे (हटाया गया) शाखाओं
- 19. लोग <CFLOGIN> का उपयोग क्यों नहीं करते हैं?
- 20. ओपनजीएल मैट्रिक्स गणित उपयोगिताएं?
- 21. क्यों std था :: पॉव (डबल, पूर्णांक) से सी ++ 11 हटाया?
- 22. buildSessionFactory() को क्यों हटाया गया है?
- 23. Roslyn SyntaxNodes पुन: उपयोग कर रहे हैं?
- 24. एसक्यूएल सर्वर डेटाबेस प्रदर्शन को मापने के लिए लोग किस उपकरण का उपयोग कर रहे हैं?
- 25. हम jQuery में "({})" का उपयोग क्यों कर रहे हैं?
- 26. लोग संपादक/प्रदर्शन टेम्पलेट बनाम एचटीएमएल हेल्पर्स का उपयोग कैसे कर रहे हैं?
- 27. सीपीयू रजिस्टरों का उपयोग क्यों तेजी से कर रहे हैं?
- 28. हम इंटरफेस क्यों कार्यान्वित कर रहे हैं?
- 29. लोग कुछ * जैसे char * और buf का उपयोग क्यों करते हैं?
- 30. डीएचसीपी ऑफ़र और एक प्रसारण क्यों कर रहे हैं?
मैं [ईजिन] (http://eigen.tuxfamily.org/) की सिफारिश करता हूं। – Arpegius
मैं अपने linmath.h में फेंक देता हूं https://github.com/datenwolf/linmath.h – datenwolf