glVertexAttribPointer सामान्यीकरण


11

glVertexAttribPointer (इंडेक्स, आकार, प्रकार, सामान्यीकृत, स्ट्राइड, पॉइंटर);

यदि मैं प्रकार = GL_UNSIGNED_BYTE और सामान्यीकृत = GL_TRUE का उपयोग करता हूं

यह कैसे सामान्यीकृत है? क्या सामान्यीकरण के लिए डेटा को 256 से विभाजित किया जाएगा? या? इसका मतलब यह होगा कि '1.0f' का सामान्यीकृत मान रखने का कोई तरीका नहीं है।

जवाबों:


13

मैनुअल से,

यदि GL_TRUE पर सेट किया जाता है, तो सामान्यीकृत इंगित करता है कि पूर्णांक प्रारूप में संग्रहीत मानों को श्रेणी में लाया जाना है [-1,1] (हस्ताक्षरित मूल्यों के लिए) या [0,1] (अहस्ताक्षरित मूल्यों के लिए) जब वे एक्सेस किए जाते हैं और परिवर्तित होते हैं। तैरनेवाला स्थल।

मुझे लगता है कि इसका मतलब है, एक अहस्ताक्षरित 8 बिट प्रकार के साथ, 0 से 0.0f और 255 से 1.0f तक का नक्शा होगा।


तो इसका मतलब है कि यह 255 से विभाजित है?
जोनाथन

सही, अहस्ताक्षरित बाइट में 0 - 255 की सीमा होती है। इसलिए यदि आपने 0xFF (जो 255 के बराबर है) पारित किया है, तो आपको 1.0f मिलेगा।
22

7
... क्या तुमने कभी मूल ज़ेल्डा खेला? माणिक की अधिकतम मात्रा 255 थी, 256 नहीं;)
मांसल

मुझे पता है कि अहस्ताक्षरित बाइट्स केवल 255 पर जाते हैं .. मैं बस सोच रहा था क्योंकि यह GPU के लिए एक शक्ति-दो से विभाजित करने के लिए तर्क लगता था
जोनाथन

मैं भी कुछ ऐसा ही सोच रहा था। Uint_8 से फ्लोट करने में एक कुशल रूपांतरण हो सकता है जो बिट्स को शिफ्ट करने से ज्यादा कुछ नहीं करता है, लेकिन मैं यह पूछने वाला नहीं हूं ... कोई व्यक्ति जो एफपीयू के झंकार के बारे में अधिक जानता है?
नॉटलेश
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.