2012-09-07 33 views
7

मुझे लगता है कि ओपन जीएल को संख्याओं का उपयोग करने की आवश्यकता है, लेकिन क्यों न केवल नियमित स्याही और फ्लोट या रैपर वर्गों का अस्तित्व में उपयोग किया जाता है (जो भी ओपन जीएल की पूरी दुनिया के लिए अच्छी तरह से फिट होना आवश्यक है)? क्या नाम के अलावा कोई अंतर है और एक विशेष रूप से ओपन जीएल में इस्तेमाल किया जा रहा है या क्या वे एक अलग नाम के साथ एक ही चीज़ हैं?GLint और GLfloat क्यों है?

उत्तर

19

क्योंकि एक इंट (वाएए ओवरस्प्लिफाइंग) 32 बिट सिस्टम पर 32 बिट्स और 64 बिट सिस्टम पर 64 बिट्स - इसलिए यहां तक ​​कि केवल "int" एक सार्वभौमिक अवधारणा नहीं है। ध्यान रखें कि ग्राफिक्स कोड चलाने वाला हार्डवेयर आपके cpu की तुलना में हार्डवेयर का एक अलग टुकड़ा है, और नए प्रकारों की आवश्यकता उभरती है। अपने स्वयं के टाइपपीफ का उपयोग करके, ओपनजीएल यह सुनिश्चित कर सकता है कि आपके ग्राफिक्स कार्ड में डेटा भेजते समय सही संख्या में बिट्स पैक की जाती हैं।

रूपांतरण कार्यों के साथ ऐसा करना संभव होगा जो "अलग-अलग चींटियों" की गड़बड़ी को दूर करते हैं, लेकिन यह एक प्रदर्शन जुर्माना होगा जो आम तौर पर तब तक स्वीकार्य नहीं होगा जब आप प्रत्येक नंबर पर जा रहे हैं ग्राफिक्स कार्ड।

tl; डॉ "int" का उपयोग करते समय, आप अपने प्रोसेसर के हार्डवेयर के साथ दिमाग में लिख रहे हैं। "GLInt" का उपयोग करते समय, आप अपने ग्राफिक्स कार्ड के हार्डवेयर के साथ दिमाग में लिख रहे हैं।

संपादित करें: टिप्पणियों में बताया गया है कि 64 बिट प्रोसेसर पर int संगतता कारणों के लिए 32 बिट्स (और शायद होगा) कर सकते हैं। ऐतिहासिक रूप से, 8, 16, और 32 बिट हार्डवेयर के माध्यम से, यह प्रोसेसर का मूल आकार रहा है, लेकिन तकनीकी रूप से, यह तब भी होता है जब संकलक मशीन कोड बनाता है। @ निकोल बोलास और @ मार्क डिकिंसन

+4

"इंट है (यहां व्हाएए ओवरस्प्लिफाइंग) 32 बिट सिस्टम पर 32 बिट्स और 64 बिट सिस्टम पर 64 बिट्स" नोट: यह आवश्यक नहीं है। संकलक तय करता है कि 'int' कितना बड़ा है। यह * 64-बिट सिस्टम पर 32-बिट हो सकता है। यह नहीं हो सकता है। –

+1

@ निकोलबोलस: +1। असल में, मुझे किसी भी * 64-बिट सिस्टम के बारे में सोचना मुश्किल लगता है जहां एक int 64 बिट्स है। मुझे पता है कि सभी सामान्य सिस्टम 32-बिट चींटियों है। कम से कम, अगर हम सी/सी ++ इनट्स के बारे में बात कर रहे हैं, तो यह है। मुझे याद है कि कुछ प्राचीन क्रेज़ में 64-बिट चींटियां थीं। –

+1

आप जानते हैं, यह सच है, टिप्पणियों के लिए धन्यवाद - मैं "मूल पता योग्य आकार" के रूप में एक int के बारे में सोच रहा था, हाल ही में एम्बेडेड में कुछ समय बिताया, लेकिन यह पता चला कि int 16 बिट प्रोसेसर पर 16 बिट्स था, 32 बिट पर 32, और ... 64 बिट पर 32। इसे संगतता कारणों के लिए 32 बिट्स के रूप में रखा गया था। मैंने बस इसे अपने x86 एमबीपी पर सत्यापित किया। यह हाइलाइट करता है कि एक इंटेल जो कुछ भी कंपाइलर बनना चाहता है, वह ग्राफिक्स कार्ड हार्डवेयर फिट करने के लिए एक मजबूत प्रकार की आवश्यकता के लिए तर्क को मजबूत कर सकता है, लेकिन टिप्पणियों और संपादन के योग्य है। अच्छा काम! – Matt