मेरे पास एक प्रतिपादन प्रणाली है जहां मैं एक बहुआयामी रेंडरबफर के साथ एक एफबीओ को आकर्षित करता हूं, फिर नमूना को हल करने के लिए नमूने को हल करने के लिए इसे बनावट के साथ किसी अन्य एफबीओ में फिसलता हूं ताकि पाठ को पढ़ने के लिए बनावट को पढ़ने के लिए बनावट को पढ़ा जा सके। बैकबफर (एफबीओ इंडेक्स 0)।glEnable (GL_FRAMEBUFFER_SRGB) कब कॉल करें?
अब मैं कुछ सही एसआरबीबी आउटपुट प्राप्त करना चाहता हूं ... समस्या यह है कि प्रोग्राम का व्यवहार ओएस एक्स और विंडोज़ पर चलाने के दौरान असंगत है और यह मशीन के आधार पर भी बदलता है: विंडोज़ पर इंटेल एचडी 3000 के साथ यह एसआरबीबी nonlinearity लागू नहीं होगा, लेकिन मेरी दूसरी मशीन पर एक Nvidia GTX 670 के साथ यह करता है। ओएस एक्स में इंटेल एचडी 3000 पर यह भी लागू होगा।
तो शायद इसका मतलब है कि मैं अपने GL_FRAMEBUFFER_SRGB
प्रोग्राम में सही बिंदुओं पर राज्य सक्षम नहीं कर रहा हूं। हालांकि मुझे ऐसा कोई ट्यूटोरियल नहीं मिल रहा है जो वास्तव में मुझे बताएगा कि मुझे इसे कब सक्षम करना चाहिए, उन्होंने केवल यह उल्लेख किया है कि यह आसान है और कोई प्रदर्शन लागत नहीं है।
मैं वर्तमान में किसी भी बनावट में लोड नहीं कर रहा हूं इसलिए मुझे अभी तक उनके रंगों को रेखांकित करने की आवश्यकता नहीं है।
प्रोग्राम को मजबूर करने के लिए रैखिक रंग मानों को वापस थूकने के लिए मजबूर करने के लिए, मैंने जो कोशिश की है वह मेरी glDisable(GL_FRAMEBUFFER_SRGB)
लाइन पर टिप्पणी कर रहा है, जिसका प्रभावी अर्थ यह है कि यह सेटिंग पूरी पाइपलाइन के लिए सक्षम है, और मैं वास्तव में इसे वापस मजबूर करता हूं हर फ्रेम पर।
मुझे नहीं पता कि यह सही है या नहीं। यह निश्चित रूप से रंगों के लिए एक nonlinearization लागू करता है लेकिन मैं यह नहीं बता सकता कि यह दो बार लागू हो रहा है (जो बुरा होगा)। यह गामा को लागू कर सकता है क्योंकि मैं अपने पहले एफबीओ में प्रस्तुत करता हूं। यह तब हो सकता है जब मैंने दूसरे एफबीओ में पहला एफबीओ फटकारा। क्यों नहीं? ,
मैं आरजीबी के लिए इनपुट रंग सेट (1:
मैं अब तक के रूप में अपने अंतिम फ्रेम का स्क्रीन शॉट लेने के लिए और रंग मैं उन्हें कार्यक्रम में करने के लिए सेट करने के लिए अपरिष्कृत पिक्सेल रंग मूल्यों की तुलना करने के लिए चले गए हैं 2,3) और आउटपुट आरजीबी (13,22,28) है।
ऐसा लगता है कि कम अंत में बहुत सारे रंग संपीड़न की तरह लगता है और मुझे गामा कई बार लागू होने पर सवाल उठता है।
मैं बस अब sRGB समीकरण के माध्यम से चले गए हैं और इस बात की पुष्टि कर सकते हैं कि रूपांतरण के रूप में ही रैखिक 1/255, 2/255 एक बार लागू किया जा रहा है, और 3/255 वास्तव में sRGB 13/255, 22 के लिए नक्शे है/255, और 28/255 समीकरण 1.055*C^(1/2.4)+0.055
का उपयोग कर। यह देखते हुए कि इन कम रंग मूल्यों के लिए विस्तार इतना बड़ा है कि एसआरबीबी रंग परिवर्तन एक से अधिक बार लागू हो रहा है, तो यह वास्तव में स्पष्ट होना चाहिए।
तो, मैंने अभी भी यह निर्धारित नहीं किया है कि सही काम क्या है। glEnable(GL_FRAMEBUFFER_SRGB)
केवल अंतिम फ्रेमबफर मूल्यों पर लागू होता है, इस मामले में मैं इसे अपने जीएल इनिट दिनचर्या के दौरान बस सेट कर सकता हूं और इसके बारे में भूल सकता हूं?
ठीक है, यह बात है। जब मैं प्रारंभ में 'GL_FRAMEBUFFER_SRGB' सक्षम करता हूं और इसे हमेशा के लिए स्पर्श नहीं करता हूं, यहां तक कि विंडोज़ में इंटेल एचडी 3000 पर भी यह सही परिवर्तन करेगा। ऐसा लगता है कि ऐसा लगता है कि इसे एनवीडिया की तुलना में कोड पथ के अधिक सक्षम करने की आवश्यकता है। –
आपने जो कहा वह बहुत समझ में आता है कि बफर के एसआरबीबी प्रारूप को यह निर्धारित करना चाहिए कि एसआरबीबी मूल्य उन्हें लिखे गए हैं या नहीं। मैं यह देखने के लिए जांच करूंगा कि यह सही तरीके से लागू किया गया है, और यह निश्चित रूप से मुझे प्रति चैनल 8 बिट्स से बहुत अधिक लाभ प्राप्त करने की अनुमति देगा। मुझे आशा है कि बहुउद्देशीय संकल्प चरण यह सही ढंग से भी करता है: मुझे पहले गलत गलत नमूना संकल्प के परिणाम सामने आए थे लेकिन मैं उस समय गलत मोड में काम कर रहा था। (इस विषय को देखें http://www.opengl.org/discussion_boards/showthread.php/165081-Multisample-resolve-is-not-gamma-correct-with-FBOs) –
क्या इंटेल ऐप्पल पर अपने प्रोसेसर के लिए ओपनजीएल ड्राइवर बनाए रखता है मशीनों? मैं इस धारणा के तहत था कि ऐप्पल ने सबकुछ खुद लिखा था (जो, मेरे अनुभव में, यह समझाएगा कि उनका एएमडी ड्राइवर इतनी खराब क्यों है।) – Philip