के साथ मल्टीसाम्प्लिंग का उपयोग कैसे करें मैं एक एफबीओ के लिए mutlisampling और अल्फा-टू-कवरेज सक्षम करने की कोशिश कर रहा हूं। डिफ़ॉल्ट फ्रेमबफर का उपयोग करके, मुझे बस glEnable(GL_MULTISAMPLE)
और glEnable(GL_SAMPLE_ALPHA_TO_COVERAGE)
पर कॉल करना है। हालांकि, मैं अपने स्वयं के एफबीओ का उपयोग करके एक ही प्रभाव प्राप्त करने में असमर्थ हूं।ओपनजीएल एफबीओ
मेरा लक्ष्य: दृश्य को एक एफबीओ में खींचें वैसे ही इसे उपरोक्त गुणों के साथ डिफ़ॉल्ट फ्रेमबफर पर खींचा जाएगा। वहां से मैं एक शेडर के माध्यम से भावी पास के लिए एक बनावट के रूप में छवि का उपयोग करने में सक्षम होना चाहता हूं।
// Generate the color attachment
glGenTextures(1,&defaultColorAttachment0);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D,defaultColorAttachment0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,screenWidth,screenHeight,0,GL_RGBA,GL_UNSIGNED_BYTE,NULL);
// Bind the texture to the FBO
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, defaultColorAttachment0,0);
// Generate the depth attachment
glGenRenderbuffers(1,&defaultDepthBuffer);
glBindRenderbuffer(GL_RENDERBUFFER, defaultDepthBuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, screenWidth, screenHeight);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, defaultDepthBuffer);
यह काम नहीं करता: बिना multisampling/अल्फा-टू-कवरेज, 1 रंग लगाव, 1 गहराई लगाव एक FBO बनाने के लिए कोड:
यह काम करता है। कोड एक multisampled FBO बनाने की कोशिश कर:
// Generate the color attachment
glGenTextures(1,&defaultColorAttachment0);
glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, defaultColorAttachment0);
glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, 4, GL_RGBA, screenWidth, screenHeight, GL_FALSE);
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, defaultColorAttachment0,0);
// Generate the depth attachment
glGenRenderbuffers(1,&defaultDepthBuffer);
glBindRenderbuffer(GL_RENDERBUFFER, defaultDepthBuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, screenWidth, screenHeight);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, defaultDepthBuffer);
मैं इस पर ओपन विकि के माध्यम से देख की कोशिश की है, हालांकि यह के अधूरा (विभिन्न अधूरा शीर्षकों यह अव्यवसायिक दिखने)। glGetError
कभी शिकायत नहीं करता है। मैंने इसके साथ गड़बड़ करने की कोशिश की है, लेकिन मुझे या तो ब्लैक स्क्रीन या कचरा पिक्सेल से भरा स्क्रीन मिलती है।
मुख्य प्रश्न: क्या बातें मैं आदेश multisampling और अल्फा-टू-कवरेज एक FBO साथ काम करने के प्राप्त करने के लिए विचार करने के लिए/परिवर्तन और जहां (FBO निर्माण, बनावट, shaders) की जरूरत है?
क्या आपने glFramebufferTexture2D (GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_MULTISAMPLE, defaultColorAttachment0,0) को कॉल करने का प्रयास किया है; glFramebufferTxture (GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, defaultColorAttachment0,0) के बजाय ;? – Jherico
@ जेरिको हां, मुझे अभी भी एक ब्लैक स्क्रीन मिलती है। – GraphicsMuncher