2010-10-28 7 views
9

लागू किया जा ओपन में मैं हमेशा समझ चुके हैं कि glEnable(GL_TEXTURE_1D), glEnable(GL_TEXTURE_2D) और/या glEnable(GL_TEXTURE_3D) (और इसी glDisable) एक प्रति बनावट इकाई पैरामीटर है।चाहिए glEnable (GL_TEXTURE_2D) प्रति बनावट इकाई

हाल ही में मैंने इसकी पुष्टि करने की कोशिश की लेकिन मुझे इस प्रश्न के बारे में किसी भी तरह से पुष्टि करने के लिए कोई स्पष्ट दस्तावेज नहीं मिला है।

बस रखो और कोड में, मैं इस

glActiveTexture(GL_TEXTURE0); 
glEnable(GL_TEXTURE_2D); 
... bind etc ... 

glActiveTexture(GL_TEXTURE1); 
glEnable(GL_TEXTURE_2D); 
... bind etc ... 

या इस

glEnable(GL_TEXTURE_2D); 

glActiveTexture(GL_TEXTURE0); 
... bind etc ... 

glActiveTexture(GL_TEXTURE1); 
.... bind etc ... 

मैं कुछ स्पष्टता को खोजने के लिए उम्मीद कर रही थी करना चाहिए।

उत्तर

7

यह बनावट प्रति वास्तव में है इकाई। सबसे हाल ही में प्रलेखन मैं इस उल्लेख पाया स्पष्ट रूप से खुली GL विनिर्देश 2.1 (2006 अद्यतन) here

अनुभाग 3.8.16 में था: बनावट आवेदन

यह शायद नई विशिष्टताओं में कहीं उल्लेख किया गया है, लेकिन वे थे भारी पुनर्गठन। आप ओपनजीएलजी वेबसाइट पर सभी ओपन जीएल संस्करण विनिर्देशों पर एक नज़र डाल सकते हैं (मैं एक लिंक पोस्ट करना चाहता था लेकिन मैं एक से अधिक पोस्ट नहीं कर सकता)।

+5

अच्छा, असल में, यह नवीनतम कोर संशोधन में नहीं होने वाला है क्योंकि फिक्स्ड-फ़ंक्शन को हटा दिया गया था और फिर हटा दिया गया था, और सक्षम फिक्स्ड-फ़ंक्शन स्थिति को नियंत्रित कर रहा है। इसका शेडर्स पर कोई प्रभाव नहीं पड़ता है। – Bahbar

+0

यह जानना अच्छा है! – Montdidier

+0

@ बाहबर: क्या आपका मतलब है कि उनके एनोटेशन के साथ जीएलएसएल शेडर्स बनावट इकाइयों और नमूने की स्थिति को नियंत्रित कर सकते हैं और इस प्रकार उदाहरण के लिए एक स्पष्ट glEnable (GL_TEXTURE2D) की आवश्यकता नहीं है? – Montdidier

8

यह प्रति बनावट इकाई है।

GL1.5 विनिर्देश से, 3.8.15:

प्रत्येक बनावट इकाई सक्षम है और से स्वतंत्र रूप से बनावट वस्तुओं के लिए ही है अन्य बनावट इकाइयों

1

यदि आप ओपनजीएल में GLSL शेडर्स का उपयोग करते हैं तो कॉल glEnable(GL_TEXTURE) पर प्रभाव नहीं पड़ता है।

इसके अलावा, अगर आप ओपन 3.x कोर प्रोफ़ाइल पर जाने के लिए इरादा मन में है कि glEnable(GL_TEXTURE) अब मान्य नहीं है रखने के लिए।

+0

'glEnable (GL_TEXTURE_2D)' अभी भी शेडर कोड के बावजूद मेरे कोड में प्रभाव डाल रहा है। ऐसा लगता है कि 'glbindTexture' परिवर्तन व्यवहार को कॉल करता है ... यह ओपनजीएल 3.2 कोर प्रोफाइल होगा। –

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