2011-09-01 16 views
5

ओपनजीएल ईएस 2.0 में पिक्सेल सही ग्राफिक्स के लिए स्क्रीन पिक्सल के साथ संरेखित करने के लिए मैं अपने बनावट कैसे प्राप्त कर सकता हूं? यह एक ऐसी परियोजना के लिए महत्वपूर्ण है जिस पर मैं काम कर रहा हूं जिस पर पिक्सेल कला ग्राफिक्स का उपयोग किया जाता है। इस पर किसी भी तरह मदद बहुत अच्छा होगा!आईफोन ओपनजीएल ईएस 2.0 - पिक्सेल परफेक्ट टेक्सचर

+1

एक और बात ... सुनिश्चित करें कि आपके पास अपने शेडर के शीर्ष पर 'सटीक हाईप फ्लोट' है। यदि आपका बनावट 1024x1024 से बड़ा है, तो मध्यम आपको बनावट में प्रत्येक पिक्सेल का नमूना देने के लिए पर्याप्त सटीकता नहीं देगा। –

उत्तर

9

मेरा उत्तर यहाँ देखें: OpenGL Texture Coordinates in Pixel Space


यह कई बार कहा गया है, लेकिन मैं हाथ में लिंक है, तो एक त्वरित और किसी न किसी स्पष्टीकरण की जरूरत नहीं है। मान लीजिए कि बनावट 8 पिक्सल चौड़ा है करते हैं:

| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 
^ ^^^^^^^^
0.0 | | | | | | | 1.0 
| | | | | | | | | 
0/8 1/8 2/8 3/8 4/8 5/8 6/8 7/8 8/8 

अंक बनावट के पिक्सल निरूपित, सलाखों बनावट के किनारों और पास के मामले में पिक्सल के बीच की सीमा को छानने। हालांकि आप पिक्सेल के केंद्रों को हिट करना चाहते हैं। तो अगर आप बनावट में रुचि रखते हैं निर्देशांक

(0/8 + 1/8)/2 = 1/(2 * 8)

(1/8 + 2/8)/2 = 3/(2 * 8)

...

(7/8 + 8/8)/2 = 15/(2 * 8)

एक एन विस्तृत बनावट में पिक्सेल मैं के लिए

या अधिक आम तौर पर उचित बनावट समन्वय

(2i + 1)/(2 एन)

हालांकि यदि आप स्क्रीन पिक्सेल के साथ अपने बनावट को पूरी तरह से संरेखित करना चाहते हैं, तो याद रखें कि जो आप निर्देशांक के रूप में निर्दिष्ट करते हैं वह क्वाड के पिक्सल नहीं हैं, लेकिन किनारों पर, प्रोजेक्शन के आधार पर स्क्रीन पिक्सेल किनारों के साथ संरेखित हो सकता है, केंद्र नहीं, इस प्रकार हो सकता है अन्य बनावट निर्देशांक की आवश्यकता है।

+0

धन्यवाद! इससे मदद मिली। – Marc

+1

मैं थोड़ा असहमत हूं - कुछ भी विशेष करने का कोई कारण नहीं है। जीएल यह सुनिश्चित करता है कि भिन्न नमूना हमेशा पिक्सेल (आमतौर पर केंद्र) के अंदर कहीं गणना की जाएगी, इसलिए कुछ भी करने की आवश्यकता नहीं है। बस बनावट को एक ट्रैक्टर के रूप में खींचें, बनावट फ़िल्टरिंग के लिए GL_NEAREST का उपयोग करें और (0,0,1,1) अपने बनावट निर्देशांक के रूप में करें। जब तक बनावट स्क्रीन स्पेस में क्वाड के समान आकार हो, तब तक आपका बनावट ड्रॉ पिक्सेलपरफेक्ट होगा। –

1

यह लिंक उपयोगी हो सकता है: "सटीक दो आयामी रैस्टराइज़ेशन वांछित है, तो ..." पर

http://glprogramming.com/red/appendixg.html#name1

देखो। यह ओपनजीएल टिप आपको बताती है कि 2 डी के लिए अपने ऑर्थो मैट्रिक्स को कैसे व्यवस्थित करें।

इसके अलावा, आपको किसी भी प्रकार की बनावट फ़िल्टरिंग को अक्षम करने की आवश्यकता हो सकती है।

+0

विरासत ओपनजीएल के लिए यह अच्छी सलाह है, लेकिन सीधे ईएस 2.0 – andrewmu

+0

@andrewmu पर लागू नहीं होती है: इसे नहीं पता था - क्या आप समझा सकते हैं? क्या ईएस इतना अलग है? – neodelphi

+0

बहुत बहुत धन्यवाद लेकिन जैसा कि ardrewmu ने कहा, ऐसे मैट्रिक्स ऑपरेशंस ES 2.0 में उपलब्ध नहीं हैं। हालांकि मैंने इससे पहले देखा था, इससे मदद मिली होगी। – Marc

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