2013-07-17 10 views
8

मुझे इसे ओपनजीएल दस्तावेज़ में कहीं भी नहीं मिला। क्षमा करें अगर इसका उत्तर दिया गया है। लेकिन मेरा सवाल यह है कि अगर मैं एक एफबीओ से दूसरे में पिक्सल कॉपी कर रहा हूं और उनमें से प्रत्येक में रंग संलग्नक के एकाधिक (आवश्यक संख्या की आवश्यकता नहीं है), और यदि मेरा मुखौटा GL_COLOR_BUFFER_BIT है, तो कौन सा रंग अनुलग्नक (GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, .... GL_COLOR_ATTACHMENTN) क्या यह प्रतिलिपि बनाता है? उन सभी को? यदि हां, तो क्या होगा यदि इन एफबीओ में उनके साथ जुड़े रंग बफर की अलग-अलग संख्या हो?क्या GlBlitFramebuffer सभी रंग अनुलग्नकों की प्रतिलिपि बनाता है यदि GL_COLOR_BUFFER_BIT मास्क निर्दिष्ट किया गया है

मान लें 2 FBOs कि इस तरह से बाध्य कर रहे हैं देखते हैं कि:

glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo1); 
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo2); 

ध्यान दें कि fbo1 2 रंग अनुलग्नक है और fbo2 4 रंग अटैचमेंट शामिल हैं।

तो इस मामले में glBlitFrameBuffer ब्लिट रंग अनुलग्नक कैसे करता है?

उत्तर

13

एक framebuffer color blitting operation होगा केवलGL_READ_FRAMEBUFFER के लिए current glReadBuffer से पढ़ा है, और यह केवलthe glDrawBuffers को लिखने GL_DRAW_FRAMEBUFFER के लिए निर्दिष्ट किया जाएगा। तो यह अनुलग्नकों के बारे में नहीं है; यह दो फ्रेमबफर के पढ़ने और ड्रा बफर के बारे में है।

+1

धन्यवाद निकोल। मुझे इसके बारे में पता था। मेरा सवाल अभी भी है। ** \t ** glBindFramebuffer (GL_DRAW_FRAMEBUFFER, fbo2), ** fbo1 \t ** glBindFramebuffer (GL_READ_FRAMEBUFFER, fbo1): प्रश्न और अधिक स्पष्ट बनाने के लिए, यहाँ 2 FBOs कि इस तरह से बाध्य कर रहे हैं कर रहे हैं इसमें 2 रंग अनुलग्नक हैं और fbo2 में 4 रंग अनुलग्नक हैं। तो इस मामले में glBlitFrameBuffer रंग अनुलग्नक कैसे कॉपी करता है? – viktorzeid

+4

@kvikram: "* मुझे इसके बारे में पता था। *" नहीं, आप नहीं थे और आप अभी भी नहीं हैं। जो आप समझने में असफल होते हैं वह "वर्तमान glReadBuffer" और "the * फ्रेमबफर * GL_READ_FRAMEBUFFER से बाध्य" के बीच का अंतर है। जैसा कि मैंने कहा, यह * संलग्नक * के बारे में नहीं है; यह फ्रेमबफर के भीतर * पढ़ने और ड्रा बफर * के बारे में है। –

+3

धन्यवाद निकोल। मुझे लगता है कि आपने मेरी समझ को मंजूरी दे दी है। पहला कदम एफबीओ को पढ़ने/ड्रा के लिए चुनना है: \t glBindFramebuffer (GL_READ_FRAMEBUFFER, fbo1); \t glbindFramebuffer (GL_DRAW_FRAMEBUFFER, fbo2); और उसके बाद स्पष्ट रूप से रंग/बफर glReadBuffer (GL_COLOR_ATTACHMENT0) के लिए रंग बफर का उल्लेख करें; glDrawBuffer (GL_COLOR_ATTACHMENT3); और उसके बाद ब्लिट ऑपरेशन करें: \t glBlitFramebuffer ..? यह fbo2 में रंग संलग्नक 3 में fbo1 से बफर में रंग संलग्नक 0 में बफर की प्रतिलिपि करेगा? – viktorzeid

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