2010-10-10 15 views
5

मेरे पास एक मूल डेल्फी टीएफआरएम है जो रॉय टैनक के कमुलस टैग क्लाउड व्यूअर, वर्डप्रेस फ्लैश प्लग-इन का अनुकरण करता है। वह प्लग-इन क्या करता है जो शब्दों का 3 डी क्षेत्र बनाता है जो "आभासी" क्षेत्र की सतह पर घूमता है। आप यहाँ कार्रवाई में इसे देख सकते हैं:डेल्फी 6: मूल डेल्फी फ़्लैश की तरह चिकनी ग्राफिक्स कर सकते हैं?

http://www.roytanck.com/2008/03/06/wordpress-plugin-wp-cumulus-flash-based-tag-cloud/

अपने आवेदन संरचना में प्रत्येक शब्द का अपना TBitmap है और क्षेत्र मैं एक अस्थायी TBitmap करने के लिए सभी शब्दों की बिटमैप्स और फिर BitBlt() कि अस्थायी TBitmap प्रिंट प्रस्तुत करना एक दृश्यमान TPaintBox के कैनवास पर। रेंडर ऑपरेशन एक टीटीमर टाइमर इवेंट पर होता है जो हर 50 मिलीसेकंड होता है।

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

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

अनुवर्ती संपादित करें: एक बहुत बड़ा "आभासी" बिटमैप पर प्रिंट होगा और फिर उस यहाँ दी गई मदद की तरह एक resampling पद्धति का उपयोग करके "नीचे" वास्तविक दिखाई कैनवास ?:

Scale an image nicely in Delphi?

+0

क्या आपके पास DoubleBuffering, AllPaintingInWmPaint, SupportsTransparentBackColor, और UserPaint पर है? एक फॉर्म पर जीडीआई प्रतिपादन करते समय इनका उपयोग करना झिलमिलाहट को रोक देगा। – Nowayz

+0

Nowayz। मुझे झटका नहीं है। जिटर स्थितित्मक है, पश्चाताप के कारण नहीं। –

+0

उत्तर निश्चित रूप से हां है। लेकिन अगर आप वास्तव में चिकनी 3 डी ग्राफिक्स चाहते हैं, तो सीपीयू पर्याप्त तेज़ नहीं है। OpenGL का उपयोग करके आपको GPU का उपयोग करने की आवश्यकता है। –

उत्तर

2

मैंने डेल्फी में कई गेम लिखे हैं। यह निश्चित रूप से करने योग्य है। देखने के लिए कई चीजें हैं।

न केवल आपको नियमित रूप से एक कार्यक्रम ट्रिगर करना है, बल्कि समय आने पर भी जांच करें और अपेक्षित प्रतीक्षा अवधि के आधार पर समय निर्धारित करने के बजाय मतदान समय के आधार पर आगे बढ़ें।

यदि GPU निर्भरता के बिना उप-पिक्सेल सटीकता की आवश्यकता है तो मैं Antigrain Geometry या डेल्फी के लिए पास्कल चचेरे भाई AGGPAS की अनुशंसा करता हूं।

एनिमेटिंग फ़ॉन्ट्स में उस फ़ॉन्ट प्रतिपादन में एक अतिरिक्त समस्या हो सकती है जिसमें अक्सर यह सुनिश्चित करने के लिए तर्क होता है कि पतले स्ट्रोक पिक्सेल सीमाओं पर दिखाई देते हैं। उस तरीके से प्रस्तुत पाठ को स्थानांतरित कर सकते हैं क्योंकि अलग-अलग स्ट्रोक एक पिक्सेल के साथ संरेखित होने से कूद सकते हैं।

यदि फ़ॉन्ट को पिक्सेल गठबंधन के रूप में प्रस्तुत किया जाता है, तो यह संभवतः बेहतर प्रबंधन करेगा यदि आपने पूर्णांक को प्रतिपादन किया है। यह अभी भी पिक्सल पर संरेखित होगा लेकिन एक समय में एक पिक्सेल को स्थानांतरित करके इसे हर बार इतना लगातार करना चाहिए।

+0

मेरा मानना ​​है कि 'एंटीअलियासाइड_क्वैलिटी' के साथ एक जीडीआई फ़ॉन्ट (http://msdn.microsoft.com/en-us/library/dd183499 (v = vs.85) .aspx) "ग्रिड-फिट" नहीं होगा, इससे परहेज करेगा * "बाउंसिंग अक्षर" * समस्या। –

1
को मुद्रित करने के लिए

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

+1

ओपनजीएल डेल्फी एप्लिकेशन लिखना बहुत आसान है, क्योंकि ओपनजीएलपीएएस इकाई है। डायरेक्टएक्स डेल्फी एप्लिकेशन लिखना इतना आसान नहीं है। –

+0

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

+0

मेरा मतलब था कि विंडोज के मूल उन्नत ग्राफिक प्लेटफार्म डायरेक्टएक्स होने के कारण इसका बेहतर समर्थन है। एमएस ने दिखाया कि उन्हें ओपनजीएल पसंद नहीं है जो –