2012-03-27 14 views
9

नेट के चारों ओर मैंने देखा कुछ उदाहरणों से, gl_FragData [0] को रंग बफर माना जाता है। मैं gl_FragData में प्रत्येक सूचकांक के अर्थ खोजने की कोशिश की और ओपन छायांकन भाषा पुस्तक (नारंगी पुस्तक)क्या gl_FragData [0] हमेशा एक रंग बफर है?

gl_FragData एक सरणी जो एक या अधिक बफ़र्स गुप्त में मानों लिखा जाता है सौंपा जा सकता है है के इस परिच्छेद में आए । इस सरणी का आकार कार्यान्वयन निर्भर है और प्रतीकात्मक निरंतर GL_MAX_DRAW_BUFFERS के साथ glGet के साथ पूछताछ की जा सकती है। के भीतर gl_FragData में लेखन मानों के परिणामस्वरूप संशोधित ऑफस्क्रीन बफर glDrawBuffers के साथ निर्दिष्ट हैं। Gl_FragData [0] में लिखा गया मान में निर्दिष्ट सूची में पहले बफर को glDrawBuffers पर कॉल करता है, gl_FragData [1] में लिखा गया मान सूची में दूसरा बफर अपडेट करता है, और इसी तरह।

यह निर्दिष्ट नहीं है कि gl_FragData का 0 वां मान हमेशा रंग बफर होता है। अगर ऐसा विनिर्देश है, तो मुझे यह कहां मिल सकता है? यदि नहीं, gl_FragData को लिखते समय सामान्य अभ्यास क्या है?

उत्तर

9

यह रंग बफर प्रति-से होना आवश्यक नहीं है। लेकिन अगर यह रंग बफर नहीं है, तो यह कुछ भी नहीं है।

gl_FragData आउटपुट सरणी glDrawBuffers द्वारा निर्धारित मानों को संदर्भित करती है। और जब एक एफबीओ का उपयोग करते हैं, तो आप इस फ़ंक्शन पर भेजे गए मान केवल GL_COLOR_ATTACHMENTn या GL_NONE हो सकते हैं। जो, नाम राज्य के रूप में, रंग बफर हैं।

तो यह या तो रंग बफर है या यह GL_NONE है।

जीएल ES कार्यान्वयन कि प्रस्ताव नहीं glDrawBuffers (यानी, कि NV_draw_buffers को लागू नहीं करते), यह के रूप में यद्यपि सूचकांक शून्य GL_COLOR_ATTACHMENT0 स्थापित किया गया था परिभाषित किया गया है के लिए।

यह ES 2.0 की मूर्खतापूर्ण वास्तव में का एक तरीका प्रदान उनमें से एक से अधिक करने के लिए प्रस्तुत करना बिना एकाधिक अनुलग्नकों की संभावना के लिए अनुमति देने के लिए है ...

+0

मैं glDrawBuffers लगता OpenGL ES में उपलब्ध नहीं है। उस मामले में एफबीओ निश्चित रूप से इसे किसी बिंदु पर बुलाता है? – Jayesh

+0

'glDrawBuffers'' 'glDrawBuffer' के साथ भ्रमित न हों, नामों की बहुत बुद्धिमान पसंद ...) ARB_draw_buffers का हिस्सा है, जो ओपनजीएल 2.0 कोर है। चूंकि OpenGL ES 2.0 को OpenGL 2.0 के सापेक्ष परिभाषित किया गया है, इसमें उस फ़ंक्शन को शामिल करना चाहिए। – Damon

+0

@ डैमन: तकनीकी रूप से, ['glDrawBuffer'] (http://www.opengl.org/wiki/GLAPI/glDrawBuffer) को 'glDrawBuffers' के संदर्भ में परिभाषित किया गया है; यह सिर्फ एक अधिक प्रतिबंधक रूप है (देने वाले बफर और अन्य सभी को 'GL_NONE' को इंडेक्स 0 सेट करता है)। लेकिन न तो जीएल ईएस 2.0 में है। –

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