2011-05-22 4 views
6

मैं एक ओपनजीएल प्रोग्राम लिख रहा हूं जो टेक्स्ट रेन्डरिंग इंजन के रूप में freetype2 का उपयोग करता है।फ्रीटिप के प्रस्तुत पाठ में हमेशा कुछ शोर क्यों होता है?

अपने एलसीडी उप-पिक्सेल प्रतिपादन का उपयोग करके, मैंने पाया कि प्रस्तुत किए गए परिणाम में हमेशा कुछ शोर पिक्सल होते हैं, ऐसा क्यों हो रहा है? इसके अलावा, हालांकि यह मैनुअल कहता है कि एलसीडी मोड चौड़ाई के साथ बफर उत्पन्न करेगा 3, मैं अक्सर चौड़ाई 3 एन + 1 या 3 एन + 2, और face->glyph->bitmap->width के साथ असंगत पाया।

enter image description here

+0

यह +1 और +2 के साथ समानता की भरपाई करने का प्रयास करता है। –

+0

+2 क्षतिपूर्ति समानता कैसा है? यह समानता नहीं बदलता है। – trVoldemort

+0

ली रयान के उत्तर पर मेरी टिप्पणी देखें (और यदि आपको पसंद है तो इसे स्वीकार करें; मुझे प्रतिनिधि की आवश्यकता नहीं है)। –

उत्तर

3

दरअसल, कोशिश करने और परीक्षण के घंटों के बाद, मुझे एहसास हुआ कि रास्टरराइज्ड ग्लाइफ डेटा में कुछ गैर-प्रासंगिक बाइट्स हैं जिन्हें padding कहा जाता है। (जबकि . गैर प्रासंगिक हैं o/x, सार्थक डेटा कर रहे हैं)

0 1 2 3 4 5 6 7 
0 o x o x o x . . 
1 x o x o x o . . 
2 o x o x o x . . 
3 x o x o x o . . 
4 o x o x o x . . 

तीन नंबर इस बफर के आकार का वर्णन कर रहे हैं, पहले दो स्पष्ट कर रहे हैं: उदाहरण के िलए नीचे इमेजिंग एक बफर में एक ग्लिफ़ डेटा है :

rows = 5 //since there are 5 rows 
width = 6 //since each row has 6 bytes of data 

हालांकि, वहाँ वास्तव में एक तिहाई से एक है:

pitch = 8 //the actual width of rows, including "padding" 

आप शौकीन की इस संपत्ति ध्यान नहीं देते हैं मेरे जैसे एर, और गलत विचार मिला कि width वास्तविक चौड़ाई है, आप एक विकृत या अनुवादित ग्लिफ आकार प्रस्तुत करेंगे।

इस 'पैडिंग' की मेरी समझ है धावित पांड्या ने कहा है, यह मुआवजा है। हालांकि, यह समानता के लिए मुआवजे नहीं है, (जाहिर है कि +2 समानता नहीं बदल रहा है) डिफ़ॉल्ट रूप से यह वास्तविक चौड़ाई को 4 से अधिक बनाने के लिए मुआवजा है। लेकिन हाँ, आप 4 को 2 या 1 भी बदल सकते हैं। मुझे लगता है अपनी चौड़ाई के साथ डेटा मैट्रिक्स को 4 से अधिक बनाकर, इसे तेजी से लोड किया जा सकता है, उदाहरण के लिए, के बजाय longint में लोड किया जा सकता है।

लेकिन फिर भी, R.. की अंतर्दृष्टि ने मुझे वास्तव में प्रभावित किया। मुझे लगता है कि आप लोग छवि नहीं कर सकते हैं मैं ऐसी मूल गलती कर सकता हूं।

+1

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

2

मैं freetype पुस्तकालय उपयोग नहीं किया है, इसलिए मैं व्यक्तिगत अनुभव से बात नहीं कर सकते, लेकिन शायद कि 'शोर' है अपने पाठ चौड़ाई या ऊपरी-बाएं पाठ की अपनी गणना के समन्वय से दूर है, क्योंकि एक - एक करके?

+0

यह सही है। छवि में घुमावदार पिक्सेल को दिखाए गए रेखा का सबसे सही पिक्सेल नहीं माना जाता है। इसके बजाय यह निम्न पंक्ति का बायां पिक्सेल है। छवि की शुरुआत के लिए ओपी का सूचक एक पिक्सेल से बंद है। –

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