2017-03-17 14 views
5

इस चर को सेट करने से क्या करता है? उदाहरण के लिए, अगर मैं इसे 4 पर सेट करता हूं, तो इसका क्या अर्थ है?वास्तव में GLFW_SAMPLES की मेरी पसंद क्या करती है?

मैंने "फ्रेमबफर संबंधित संकेत" खंड के तहत glfw.org पर एक विवरण पढ़ा है (यहां देखें: GLFW Window Guide)। मैनुअल का कहना है कि "GLFW_SAMPLES मल्टीसाम्पलिंग के लिए उपयोग करने के लिए नमूने की वांछित संख्या निर्दिष्ट करता है। शून्य मल्टीसाम्पलिंग अक्षम करता है। GLFW_DONT_CARE का अर्थ है कि एप्लिकेशन को कोई वरीयता नहीं है।"

मैंने सामान्य रूप से मल्टीसाम्पलिंग का विवरण भी पढ़ा है (यहां देखें: शॉन हरग्रेव्स द्वारा Multisampling)।

मुझे मल्टीसाम्प्लिंग का अर्थ है: जब छवि को आकार देने और पुन: निकालने के लिए उपयोग किए गए बिंदुओं की संख्या पर्याप्त रूप से बंद होनी चाहिए, जो कि हम देखते हैं कि छवि का सटीक प्रतिनिधित्व है। डिजिटल ओसीलोस्कोप के साथ एक ही विचार पॉप-अप करता है --- कहें कि आप एक साइनसॉइड सिग्नल का नमूना ले रहे हैं। यदि नमूना दर केवल तरंग की आवृत्ति (एफ) के बराबर होती है, तो दायरा निरंतर वोल्टेज प्रदर्शित करता है, जो इनपुट संकेत से बहुत अलग है जिसे आप देखना चाहते हैं। इससे बचने के लिए, Nyquist प्रमेय हमें बताता है कि हमें कम से कम 2 एफ की दर से नमूना देना चाहिए। तो मैं देखता हूं कि कंप्यूटर ग्राफिक्स में कोई समस्या कैसे उत्पन्न हो सकती है, लेकिन मुझे नहीं पता कि वास्तव में फ़ंक्शन

glfwWindowHint(GLFW_SAMPLES, 4); करता है।

उत्तर

7

इस चर को सेट करने से क्या होता है? उदाहरण के लिए, अगर मैं इसे 4 पर सेट करता हूं, तो इसका क्या अर्थ है?

GLFW_SAMPLES बहुआयामी को सक्षम करने के लिए उपयोग किया जाता है। तो glfwWindowHint(GLFW_SAMPLES, 4) आपके आवेदन में 4x MSAA सक्षम करने का एक तरीका है।

4x एमएसएए का अर्थ है कि खिड़की के बफर के प्रत्येक पिक्सेल में 4 सबमैपल होते हैं, जिसका अर्थ है कि प्रत्येक पिक्सेल में 4 पिक्सल होते हैं ताकि बोल सकें। इस प्रकार 200x100 पिक्सल के आकार के साथ एक बफर वास्तव में 800x400 पिक्सल होगा।


यदि आप एक अतिरिक्त फ्रेमबफर बनाना चाहते हैं जो स्क्रीन से 4 गुना बड़ा है। फिर फिल्टर के रूप में GL_LINEAR के साथ बनावट नमूने के रूप में इसका उपयोग करके, मूल रूप से एक ही परिणाम प्राप्त होगा। ध्यान दें कि यह केवल 4x एमएसएए के मामले में है, क्योंकि GL_LINEAR केवल प्रश्न में पिक्सेल के निकट 4 नमूने लेता है।

जब एंटी-एलियासिंग की बात आती है, तो एमएसएए का उपयोग करना वास्तव में प्रभावी लेकिन महंगा समाधान है। यदि आप एक बहुत साफ और अच्छे दिखने वाले परिणाम चाहते हैं, तो यह निश्चित रूप से जाने का तरीका है। 4x एमएसएए आमतौर पर चुना जाता है क्योंकि इसका उपयोग करके गुणवत्ता और प्रदर्शन के बीच एक अच्छा संतुलन होता है।

प्रदर्शन के संदर्भ में सस्ता विकल्प FXAA का उपयोग करना है। जो एक पोस्ट प्रोसेसिंग चरण के रूप में किया जाता है और आमतौर पर कोई कीमत नहीं आता है। अंतर यह है कि एमएसएए एक बड़े आकार और डाउनसमल्स को वांछित आकार में प्रस्तुत करता है, किसी भी गुणवत्ता को खो नहीं देता है। जहां FXAA बस पिक्सेल औसत है, मूल रूप से छवि को धुंधला कर रहा है। FXAA आमतौर पर वास्तव में एक सभ्य परिणाम देता है।

इसके अलावा आपका ड्राइवर डिफ़ॉल्ट रूप से इसे सक्षम बनाता है। लेकिन अगर यह glEnable(GL_MULTISAMPLE) का उपयोग नहीं करता है।


आखिरकार यदि आपके पास पहले से नहीं है, तो मैं अत्यधिक LearnOpenGL's Anti-Aliasing ट्यूटोरियल पढ़ने की सलाह देता हूं। यह सब कुछ वास्तव में गहराई से स्पष्टीकरण देता है।

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