2012-03-31 13 views
5

क्या होता है यदि आप उसी बनावट छवि इकाई में GL_TEXTURE_2D और GL_TEXTURE_CUBE_MAP दोनों को (विभिन्न बनावट) बांधते हैं?ओपनजीएल ईएस 2.x: एक ही बनावट छवि इकाई में 'GL_TEXTURE_2D` और `GL_TEXTURE_CUBE_MAP` दोनों को बाध्य करें?

उदाहरण के लिए, मान लीजिए कि मैं एक बनावट GL_TEXTURE0 के GL_TEXTURE_2D लक्ष्य और उसी बनावट इकाई के GL_TEXTURE_CUBE_MAP लक्ष्य पर एक और बनावट बांधता हूं। क्या मेरे पास दो वर्दी वेरिएबल हो सकते हैं, एक sampler2D और दूसरा samplerCube और दोनों को 0 पर सेट करें (GL_TEXTURE0 देखें)?

मुझे संदेह है कि उत्तर "नहीं" है (या नतीजा अपरिभाषित है) लेकिन मुझे उस spec में कुछ भी नहीं मिला है जो विशेष रूप से एक ही बनावट छवि इकाई में एकाधिक बनावट लक्ष्यों का उपयोग करने पर रोक लगाता है।

उत्तर

7

मुझे कुछ भी नहीं मिला है जो वर्णन करता है कि क्या आप एक बनावट बनावट में एक 2 डी बनावट और घन नक्शा बनावट बांध सकते हैं, लेकिन (या तो) मुझे लगता है कि यह पूरी तरह से संभव है। यह अनुमति देने के लिए समझ में आता है, क्योंकि सभी बनावट संशोधन कार्यों के लिए आपको वैसे भी काम करने के लिए बनावट लक्ष्य निर्दिष्ट करने की आवश्यकता होती है।

लेकिन OpenGL ES 2 कल्पना स्पष्ट रूप से, एक शेडर में एक ही समय में दोनों का उपयोग करने की अनुमति नहीं देता के रूप में अध्याय 2.10 कहते हैं:

यह अलग नमूना प्रकार ही की ओर इशारा करते के चर के लिए अनुमति नहीं है एक प्रोग्राम ऑब्जेक्ट के भीतर बनावट छवि इकाई। यह स्थिति केवल जारी किए गए अगले प्रतिपादन आदेश पर ही पता लगाया जा सकता है और फिर एक INVALID_OPERATION त्रुटि उत्पन्न की जाएगी।

तो तुम उपयोग नहीं कर सकते दोनों एक sampler2D और एक samplerCube एक ही बनावट इकाई की चर्चा करते हुए अपने कार्यान्वयन के बनावट इकाई सीमा मोड़।