2013-02-08 18 views
6

मुझे एक मनमानी ओपनजीएल बनावट ऑब्जेक्ट को क्रमशः सटीक समान स्थिति और डेटा के साथ पुनर्स्थापित करने में सक्षम होने के लिए क्रमबद्ध करने की आवश्यकता है।ओपनजीएल में कच्चे (अनवरोधित) बनावट डेटा कैसे प्राप्त करें?

मैं बनावट छवि डेटा प्राप्त करने का एक तरीका ढूंढ रहा हूं। यहां मैंने जो पाया है, वह है:

  • glGetTexImage है।

    यह करने की अनुमति देता बनावट छवि हो जाता है, लेकिन यह एक निर्दिष्ट प्रारूप/प्रकार जोड़ी (जैसे की आवश्यकता है (GL_RGB,   GL_HALF_FLOAT) जो इसे एक रूपांतरण करता है।

    अनुमति स्वरूपों और प्रकार 1 मैप नहीं :। छवि प्रारूप हालांकि करने के लिए 1, और सही ढंग से आधार आंतरिक प्रारूपों (कोई आकार के साथ GL_RGB की तरह) के लिए सी प्रकार का निर्धारण करने के लिए अतिरिक्त रूपांतरण के बिना GL_R3_G3_B2 की तरह अधिक अस्पष्ट स्वरूपों प्राप्त करने के लिए अनुमति नहीं दी जाएगी

    इसके अलावा कुछ गैर तुच्छ श्रम शामिल

  • ARB_internalformat_query2 है जो GL_GET_TEXTURE_IMAGE_FORMAT और GL_GET_TEXTURE_IMAGE_TYPE के लिए पूछने की अनुमति देता है जो किसी दिए गए बनावट के लिए glGetTexImage के लिए सर्वोत्तम विकल्प का प्रतिनिधित्व करता है।

    अच्छा, लेकिन glGetTexImage के समान सीमाओं से पीड़ित है और व्यापक रूप से उपलब्ध नहीं है।

  • अद्भुत glGetCompressedTexImage है जो सुंदर रूप से संपीड़ित बनावट के डेटा को लौटाता है, लेकिन यह न तो संकुचित छवियों के लिए काम करता है और न ही एक समकक्ष है।

इनमें से कोई भी गैर संपीड़ित बनावट के लिए कच्चे डेटा को प्राप्त करने या सेट करने की अनुमति देता है। क्या उधर रास्ता है?

उत्तर

2

यह चाल प्रारूप के मिलान खोजने के लिए है और उपज सही डेटा लेआउट टाइप करें।

अनुमति प्रारूप और प्रकार छवि प्रारूपों में 1: 1 को मानचित्र नहीं करते हैं, और अतिरिक्त रूपांतरण के बिना GL_R3_G3_B2 जैसे अधिक अस्पष्ट प्रारूप प्राप्त करने की अनुमति नहीं देंगे।

कि GL_RGB होगा, GL_UNSIGNED_BYTE_3_3_2

भी सही ढंग से आधार आंतरिक प्रारूपों के लिए सी प्रकार (कोई आकार के साथ GL_RGB की तरह) का निर्धारण करने के लिए कुछ गैर तुच्छ श्रम शामिल है।

हां यह करता है। * धूप का चश्मा डालता है * इसके साथ सौदा! ;)

आंतरिक प्रारूप के लिए। मैं इस प्रकार refer you to

glGetTexLevelParameter(GL_TEXTURE_…, …, GL_TEXTURE_INTERNAL_FORMAT,…); 
glGetTexLevelParameter(GL_TEXTURE_…, …, GL_TEXTURE_{RED,GREEN,BLUE,ALPHA,DEPTH}_TYPE, …); 
glGetTexLevelParameter(GL_TEXTURE_…, …, GL_TEXTURE_{RED,GREEN,BLUE,ALPHA,DEPTH}_SIZE, …); 
+0

डैंक schön! अब मुझे पता है कि मैं किसके साथ काम कर रहा हूं। मैं [इस बात को * एक साथ रखने के लिए कुछ प्रयास कर रहा हूं] (https://gist.github.com/Kos/4739337) और मैं, एर, परीक्षण करने की उम्मीद कर रहा हूं। और मुझे आरजीबी 10 या आरजीबीए 2 जैसे कुछ प्रारूपों के लिए सही मिलान नहीं मिल सका। काश मैं आसानी से सत्यापित करने के लिए 'ARB_internalformat_query2' था ... – Kos

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