GL_TEXTURE_WRAP) _ (S / T) क्या बदल रहा है?


12

मैं कुछ शुरुआती ओपनगैल ट्यूटोरियल के माध्यम से काम कर रहा हूं, और वर्तमान एक सिखाता है कि एक साधारण आयत पर बनावट कैसे लागू करें। ट्यूटोरियल बताता है कि मुझे टेक्सटाइल पैरामीटर GL_TEXTURE_WRAP_S और GL_TEXTURE_WRAP_T को GL_CLAMP_TO_EDGE पर सेट करना है, हालांकि मैं अनिश्चित हूं कि यह वास्तव में क्या करता है। मुझे पता है कि यह कुछ इस तरह से होता है कि बनावट को अंतरिक्ष से बड़ा / छोटा कैसे किया जाता है जिस पर उन्हें मैप किया जा रहा है, लेकिन मुझे यकीन नहीं है कि यह वास्तव में किस व्यवहार का कारण बनता है। GL_CLAMP_TO_EDGE क्या करता है और यह GL_CLAMP, GL_CLAMP_TO_BORDER, GL_REPEAT से कैसे भिन्न है? अग्रिम में बहुत बहुत धन्यवाद, और यदि आप मेरे जैसे बेवकूफ के लिए चित्र प्रदान कर सकते हैं तो बोनस सहायता।

जवाबों:


29

वैसे S और T का मतलब सिर्फ U और V है (या यदि आप चाहें तो X और Y), या GLSL में:

vec4.xyzw == vec4.rgba == vec4.strq

GL_REPEAT मोड में जब आप पिछले (0,0) से (1,1) सीमा तक जाते हैं, तो बनावट दोहराई जाती है

जब आप किनारे से गिरते हैं तो GL_CLAMP_TO_EDGE मोड में अंतिम पिक्सेल पर बनावट बंद हो जाती है।

GL_CLAMP और GL_CLAMP_TO_BORDER को हटा दिया गया है क्योंकि सभी बनावट सीमाएँ 0 पिक्सेल की होनी चाहिए, इसलिए मोड अब समझ में नहीं आते हैं। (जीएल 3 के आसपास कहीं मुझे विश्वास है)

अधिक मोड हैं इसलिए डॉक्स पढ़ना सुनिश्चित करें। (उदाहरण: GL_MIRRORED_REPEAT, GL_MIRROR_CLAMP_TO_EDGE)


Http://www.flipcode.com/archives/Advanced_OpenGL_Texture_Mapping.shtml पर कुछ अच्छे उदाहरण हैं , यहाँ एक पूर्वावलोकन है:

लपेटें S: GL_CLAMP / Wrap T: GL_CLAMP

दबाना दबाना

लपेटें S: GL_CLAMP / Wrap T: GL_REPEAT

दबाना दोहराएँ

लपेटें S: GL_REPEAT / Wrap T: GL_CLAMP

बार-बार दबाना

लपेटें S: GL_REPEAT / लपेटें T: GL_REPEAT

बार-बार दोहराना


धन्यवाद। बहुत बढ़िया जवाब। क्या आपको पता है कि GL_CLAMP_TO_EDGE और GL_CLAMP में कोई अंतर है, और अगर उपलब्ध जगह को भरने के लिए विस्तार करने के लिए सिर्फ बनावट प्राप्त करना है, तो क्या होगा?
w4etwetewtwet

स्पष्ट नहीं करने के लिए क्षमा करें, जहां मैं कहता हूं CLAMP I का अर्थ GL_CLAMP_TO_EDGE है, GL_CLAMP आधुनिक ओपनजीएल में चला गया है। मैं उस पर जोर देने के लिए उत्तर संपादित करूंगा।
मिकलेह

"विस्तार" के लिए के रूप में यदि आप बस बनावट को एक अलग सीमा में खींचते हैं, तो इसे जाल पैरामीटर के दौरान संभाला जाना चाहिए। (यूवी मैपिंग, आर्टिस्ट जॉब) .. यदि आप वास्तव में इसे व्यावहारिक रूप से करना चाहते हैं, तो आपको एक शेडर में उपयोग करने के लिए अपना सूत्र लिखना होगा। (या मुझे लगता है कि अगर आपका ऐप पहले से ही पुराना हो चुका है तो GL_TEXTURE मैट्रिक्स: P)
मिकला

4

यहाँ 2014/02/07 के रूप में glTexParameter पर OpenGL संदर्भ पृष्ठ का एक उद्धरण है , आसान विकल्प के लिए थोड़ा सा स्वरूपित:

GL_TEXTURE_WRAP_S

सेट बनावट के लिए रैप पैरामीटर समन्वय रों या तो GL_CLAMP_TO_EDGE, GL_CLAMP_TO_BORDER, GL_MIRRORED_REPEAT, GL_REPEAT, या GL_MIRROR_CLAMP_TO_EDGE करने के लिए।

  • GL_CLAMP_TO_EDGE कारणों रों निर्देशांक सीमा में क्लैम्प किया जाना है रेंज, जहां एन clamping की दिशा में बनावट का आकार है।

  • GL_CLAMP_TO_BORDER GL_CLAMP_TO_EDGE के समान तरीके से s निर्देशांक का मूल्यांकन करता है।
    हालाँकि, ऐसे मामलों में जहां GL_CLAMP_TO_EDGE मोड में क्लैम्पिंग हुई होती है, भ्रूण के टेक्सल डेटा को GL_TEXTURE_BORDER_COLOR द्वारा निर्दिष्ट मानों के साथ प्रतिस्थापित किया जाता है।

  • GL_REPEAT का कारण बनता है के पूर्णांक भाग रों ध्यान नहीं दिया जा करने के लिए के बीच तालमेल की
    जीएल केवल भिन्नात्मक भाग का उपयोग करता है, जिससे एक दोहराव पैटर्न बनता है।

  • GL_MIRRORED_REPEAT का कारण बनता है रों समन्वय बनावट के आंशिक हिस्से के लिए स्थापित किया जाना समन्वय करता है, तो के पूर्णांक भाग रों भी है; यदि s का पूर्णांक भाग विषम है, तो s बनावट समन्वय स्थापित किया जाता है 1-frac, जहां sfrac के भिन्नात्मक भाग का प्रतिनिधित्व करता है ।

  • GL_MIRROR_CLAMP_TO_EDGE का कारण बनता है रों बनावट में से एक reptition, जिस पर GL_CLAMP_TO_EDGE में के रूप में आबद्ध किया करने के लिए समन्वय बिंदु के लिए GL_MIRRORED_REPEAT के लिए के रूप में दोहराया जाना समन्वय।

प्रारंभ में, GL_TEXTURE_WRAP_S पर सेट है GL_REPEAT

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.