2008-08-10 13 views
7

में अल्फा ब्लेंडिंग स्प्राइट्स devkitPro (libnds, libarm, आदि सहित) के साथ अल्फा मिश्रण स्प्राइट्स और पृष्ठभूमि की कोशिश कर रहा हूं।निंटेंडो डीएस होमब्रू

क्या कोई यह जानता है कि यह कैसे करें?

उत्तर

4

एक सामान्य संदर्भ के रूप में, मैंने एक बार उस मुद्दे के बारे में a small blog entry लिखा था। असल में, आपको सबसे पहले परिभाषित करना होगा कि कौन सी परत अल्फा-मिश्रित है जिसके खिलाफ अन्य परतें हैं। Afaik,

  • कुछ परतों को प्रदर्शित करने के लिए स्रोत परत (ओं) गंतव्य परतों पर होनी चाहिए। इसका मतलब है कि स्रोत परतों की प्राथमिकता गंतव्य परतों की प्राथमिकता से संख्यात्मक रूप से कम होनी चाहिए।
  • स्रोत परत पारदर्शी होने जा रही है, गंतव्य (ओं) के माध्यम से देखा जा रहा है (और हाँ, मुझे यह भ्रमित लगता है)।

sprites, specifically के लिए, आप तो आप क्या जरूरत पर निर्भर करता है अल्फा सम्मिश्रण प्राप्त करने के लिए 3 तरीके हैं और आप क्या इसके लिए "देने के लिए तैयार" कर रहे हैं:

  • आप सभी स्प्राइट कर सकते हैं में BLEND_SRC_SPRITE पर चालू करके कुछ अल्फा-ब्लेंडिंग करें ... उपयोगी नहीं है।
  • आप चुनिंदा ATTR0_TYPE_BLENDED का उपयोग कर कुछ sprites के मिश्रण पर चयन कर सकते हैं। सभी स्प्राइट्स (और परतों) के लिए मिश्रण स्तर समान होगा
  • बिटमैप-प्रकार स्प्राइट सीधे रंग (पैलेट को बाईपास) का उपयोग करते हैं, इसलिए ATTR2_PALETTE() जीबीए स्प्राइट्स का क्षेत्र बेकार है और इसे ATTR2_ALPHA में पुनर्नवीनीकरण किया गया है।
1

यह लंबा समय रहा है क्योंकि मैंने कोई जीबीए प्रोग्रामिंग किया है, लेकिन जैसा कि मुझे याद है, डीएस जीबीए का समर्थन करने वाली सामग्री के अधिकांश (यदि नहीं सभी) का समर्थन करता है। This लिंक में एक अनुभाग है जिसमें जीबीए (धारा 13.2) के लिए अल्फा ब्लेंडिंग कैसे करें। मुझे नहीं पता कि ऐसा करने का एक डीएस-विशिष्ट तरीका है, लेकिन यह आपके लिए काम करना चाहिए।

+0

बहुत जीबीए विशिष्ट – CVertex

4

डीएस पर स्प्राइट blend control registers का उपयोग करके अल्फा मिश्रित किया जा सकता है। मुख्य स्क्रीन पर काम करने के लिए टोनक आवश्यक जानकारी देता है क्योंकि रजिस्टर स्थान समान हैं। सबस्क्रीन पर अल्फा मिश्रण एक ही प्रक्रिया का उपयोग 1000h ऑफसेट पर विभिन्न रजिस्टरों के साथ करता है।

रजिस्टरों को आप देख रहे होंगे REG_BLDMOD, REG_COLV, और मुख्य स्क्रीन के लिए REG_COLY और REG_BLDMOD_SUB, REG_COLV_SUB, और उप स्क्रीन के लिए REG_COLY_SUB हैं।

यह भी याद रखें कि आपको प्रति स्प्राइट मिश्रण को सक्षम करने के लिए change the sprite's graphic mode करना होगा।

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