2011-10-16 15 views
8

मैं glTexSubImage2D को कॉल कर रहा हूं। यदि मेरा पिक्सेल प्रारूप GL_RGBA है, तो पिक्सेल प्रकार GL_UNSIGNED_BYTE और GL_UNSIGNED_INT_8_8_8_8 पूरी तरह समकक्ष हैं?ओपनजीएल बनावट अपलोड: UNSIGNED_BYTE बनाम UNSIGNED_INT_8_8_8_8

इसके अलावा, ये दो जोड़े बराबर हैं?

  • Format = GL_RGBA, Type = GL_UNSIGNED_INT_8_8_8_8
  • Format = GL_BGRA, Type = GL_UNSIGNED_INT_8_8_8_8_REV

मैं ओपन कल्पना और GL_EXT_packed_pixels कल्पना पढ़ने की कोशिश की है, लेकिन ईमानदारी से मैं सिर या उनमें से पूंछ नहीं कर सकता।

उत्तर

16

उत्तर नहीं हैं और नहीं। आपको अपने कंप्यूटर में बाइट ऑर्डर के बारे में सोचना होगा। यदि आपके पास GL_RGBA और GL_UNSIGNED_INT_8_8_8_8 है, तो इसका मतलब है कि पिक्सेल 32-बिट पूर्णांक में संग्रहीत हैं, और रंग इस तरह के पूर्णांक में लॉजिकल ऑर्डर आरजीबीए में हैं, उदा। लाल उच्च क्रम बाइट में है और अल्फा निम्न क्रम बाइट में है। लेकिन अगर मशीन छोटी-छोटी है (इंटेल सीपीयू के साथ), तो यह इस प्रकार है कि स्मृति में वास्तविक क्रम ABGR है। जबकि, GL_RGBAGL_UNSIGNED_BYTE के साथ बाइट्स को आरजीबीए क्रम में स्टोर करेगा चाहे यह कंप्यूटर छोटा-अंत या बड़ा-एंडियन है।

GL_BGRAGL_UNSIGNED_INT_8_8_8_8_REV लॉजिकल ऑर्डर एआरजीबी में एक पूर्णांक में रंगों को स्टोर करेगा, लेकिन फिर थोड़ी-अंत मशीन पर, आपको स्मृति में बीजीआरए ऑर्डर मिलता है।

+3

यह इंगित करने योग्य है कि 'GL_UNSIGNED_BYTE' और' GL_UNSIGNED_INT _... 'इस उदाहरण में पिक्सेल स्थानांतरण प्रकार हैं। वे जीएल रंग को कैसे स्टोर करते हैं, इस बारे में कुछ भी नहीं कहते हैं, रंगीन डेटा को भेजे जाने पर ही "पैक" रंगों को जीएल द्वारा कैसे समझाया जाता है। एक महत्वपूर्ण भेद का क्रमबद्ध करें क्योंकि आमतौर पर इन अधिक विदेशी प्रारूपों के साथ लक्ष्य क्लाइंट (सीपीयू) और सर्वर (जीपीयू) प्रारूपों से मेल खाना है ताकि जीएल को डेटा रूपांतरण करने की आवश्यकता न हो और एक साधारण ब्लॉक हस्तांतरण कर सके। –

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