Wednesday, December 31, 2014

DirectX ဆိုတာ


























DirectX ဆိုတာဘာလဲတဲ့။ အခု မသိသေးသောသူများလဲ သိရလေအောင် ဒါကို သဘောပေါက်လောက်အောင် ပြောပေးလိုက်ပါတယ်။ DirectX ဆိုတာ Microsoft က ဖန်တီးပေးထားတဲ့ API ( Application Programming Interface ) အစုအဝေးတစ်ခုပါ။ Microsoft က Low-Level Programming အသေးစိတ်ကို လုပ်ဆောင်ပေးထားပြီး application programmer တွေက အဲ့ဒီ API တွေကို သူတို့ရဲ့ multimedia နဲ့ game program တွေမှာ စိတ်တိုင်ကျ ယူသုံးနိုင်ပါတယ်။ နာမည်ကြီး Microsoft Windows Operating System တွေမှာ DircetX ကို တစ်ခါတည်းထည့်ပေးလိုက်လေ့ရှိပါတယ်။ New Version ကိုလည်း နောက်ပိုင်းမှာ ထပ်ပြီး Install လုပ်လို့လည်း ရပါတယ်။ Direct API တွေက Multimedia and Game Application Developer တွေကို Hardware Devices တွေနဲ့ ဆက်သွယ် လုပ်ဆောင်ဖို့နေရာမှာ Low-Level Interface တွေရဲ့ အစားထိုးအနေနဲ့ အသုံးပြုခွင့်ပေးနိုင်ဖို့အတွက် Design လုပ်ထားတာ ဖြစ်ပါတယ်။ Game Developer ( Programmer ) တွေ အနေနဲ့ Hardware တွေရဲ့ အသေးစိတ်ကို သိစရာမလိုပဲ၊ Hardware Specific Codes တွေကို ရေးနေစရာမလိုပဲနဲ့ Direct API ကို သိရုံနဲ့ Hardware တွေနဲ့ တိုက်ရိုက်နီးပါ ချိတ်ဆက် အလုပ်လုပ်ရတာပေါ့။

DirectX က ဘာလို့ လိုအပ်လာရတာလဲလို့ ဆိုရင် DOS ခေတ်မှာကတည်းက Programmer တွေဟာ အမျိုးမျိုးသော Game တွေကို ရေးခဲ့ကြပါတယ်။ အဲ့ဒီအချိန်တုန်းက Game Developer တွေဟာ Hardware Device တစ်ခုခြင်းစီအတွက် အဲ့ဒီ Device ရဲ့ လုပ်ဆောင်နိုင်စွမ်းတွေကို အပြည့်အဝ အသုံးချနိုင်ဖို့အတွက် အသေးစိတ် Hardware Specific Controlling Code တွေကို ရေးပေးဖို့ လိုပါတယ်။ ဒါမှလည်း Game ရဲ့ Performance က ကောင်းကောင်း ရမှာပါ။ အဲ့ဒီလို Hardware Specific Code တွေကို ရေးနိုင်ဖို့အတွက် Game Developer တွေဟာ Device တစ်ခုချင်းစီရဲ့ အချက်လက်တွေကို နားလည်သိနေဖို့လည်း လိုပါတယ်။ Game Developer တွေအတွက် အဲ့ဒီအချက်ဟာ အခက်အခဲ တစ်ခု ဖြစ်စေပါတယ်။ ဘာလို့လည်းဆိုတော့ အဲ့ဒီအချိန်တုန်းက Hardware Device ထုတ်လုပ်သူတွေ ( ဉပမာ Graphic Card , Sound Card ဆိုပါတော့ ) ကြားမှာ သတ်မှတ်ထားတဲ့ သဘောတူ ကိုက်ညီမှုရှိတဲ့ Standard ဆိုတာ မရှိသေးပါဘူး။ ဒီတော့ Game Developer တစ်ယောက်က သူ့ Game ကို စျေးကွက်ထဲမှာ ရှိနေသမျှ Hardware တွေနဲ့ အလုပ်လုပ်ဖို့ဆိုရင် Hardware အားလုံးအတွက် Specific Code အမျိုးမျိုးတွေကို သူ့ Game ထဲ့မှာ ထည့်ရေးပေးနိုင်ဖို့ လိုပါတယ်။ ဒါဟာလည်း Game Developer တစ်ယောက်အတွက် ကြီးမားတဲ့ အခက်ခဲ့ တစ်ခုဖြစ်စေပါတယ်။ ဒါပေမဲ့ ဒီနည်းပဲ ရှိတဲ့အတွက် သူတို့မှာ ရွေးချယ်စရာ လမ်းမရှိပါဘူး။ ဒါကြောင့် အဲ့ဒီအချိန်တုန်းက Game တစ်ခုဟာ Hardware အကန့်အသတ်နဲ့ပဲ အလုပ်လုပ်နိုင်လေ့ ရှိပါတယ်။ ဒါကြောင့် Game Developer တွေကြားမှာ အမျိုးမျိုးသော Hardware Brands တွေအတွက် အားလုံးနဲ့ အလုပ်လုပ်နိုင်မဲ့ Standard Interface တစ်ခုကို မျှော်လင့်ခဲ့ကြပါတယ်။ ဒါမှလည်း High-Level Application Programmer တွေအတွက် Hardware Specific Code တွေကို ရေးဖို့ ထွက်လာတဲ့ အဲ့ဒီ DirectX 1 မှာ ကန့်သတ်ချင်တွေ၊ အားနည်းချက်တွေ အများကြီးရှိနေပါတယ်။ ဒါပေမဲ့ DirectX 1 က Developer တွေအတွက် သူတို့ရဲ့ Application တွေနဲ့ ဆက်သွယ်လုပ်ဆောင်ရတာ အရမ်းကို လွယ်ကူသွားစေခဲ့ပါတယ်။ ဒါကြောင့် ပထမဆုံးထွက်လာတဲ့ DirectX 1 မှာ ကန့်သတ်ချက်တွေ Hardware တွေကို Support လုပ်တဲ့နေရာမှာ အားနည်းချက်တွေ ရှိတွေပေမဲ့ Microsoft ရဲ့ ဒီကြိုးပမ်းမှုဟာ Game နဲ့ Multimedia Industry အတွက် အရေးပါတဲ့ Point တစ်ခုဖြစ်လာခဲ့ပါတယ်။ အဓိက ကတော့ Game Developer တွေအတွက် အမျိုးမျိုး Hardware Devices တွေနဲ့ ဆက်သွယ်လုပ်ဆောင်တဲ့နေရာမှာ အရမ်းကို လွယ်ကူစေခဲ့ပါတယ်။

DirectX ကို ဖန်တီးတဲ့နေရာမှာ Microsoft က နောက်ပိုင်းမှာ ပိုပြီး အဆင့်မြင့်တဲ့ နည်းပညာတွေ ပေါ်လာရင် အသစ်သစ်တွေ ထပ်ပေါင်းထည့်နိုင်ဖို့၊ အဲ့လိုရှိပြီးသာ DirectX ပေါ်မှာနောက်ထပ် Function အသစ်တွေ ထပ်ပေါင်းထည့်တဲ့နေရာမှာ Backward Compatibility လို့ခေါ်တဲ့ အဟောင်းတွေနဲ့ ကိုက်ညီမှုလည်း ရှိစေဖို့အတွက် စဉ်းစားပေးခဲ့ပါတယ်။ သဘောက DirectX 7 ကို အသုံးပြုပြီး ဖန်တီးထားတဲ့ Game တစ်ခုကို အသစ်ပေါ်နေတဲ့ DirectX 9 နဲ့ အလုပ်လုပ်ရင် ဘာပြဿာနာမှ မရှိအောင်ပေါ့။ အဲ့ဒီလို ဖြစ်စေဖို့အတွက် Microsoft က DirectX ကို COM ( Component Object Model ) လို့ခေါ်တဲ့ နည်းပညာ အပေါ်မှာ အခြေခံ တည်ဆောက်ခဲ့ပါတယ်။ COM နဲ့ တည်ဆောက်ထားတာတဲ့ Software Object တွေဟာ တစ်ခြား Programmer တွေက သူတို့ကို အသုံးပြုနိုင်ဖို့အတွက် Interface တွေကို အသုံးပြုကြပါတယ်။ အဲ့ဒီ Interface တွေထဲမှာ Programmer တွေက ပါလာရင်တောင်မှာ အရင် Interface အဟောင်းတွေကို လုံးဝလုံးဝ အလုပ်လုပ်ပေးနိုင်ပါတယ်။ COM Object နည်းပညာကို အသုံးပြုတဲ့ နောက်ထပ်ကောင်းတဲ့ အချက်က COM Object တွေဟာ သူတို့ကို ဘယ် Programming Language ကနေမဆို လှမ်းခေါ်ပြီး သုံးလို့ရပါတယ်။ ကန့်သတ်ချက် မရှိပါဘူး။ ( COM အကြောင်းသိချင်ရင် စာအုပ်တွေရှိပါတယ်။ လေ့လာကြည့်ပါ )

လက်ရှိ DirectX နည်းပညာကို Layer နှစ်ခုနဲ့ တည်ဆောက်ထားပါတယ်။ API Layer နဲ့ HAL ( Hardware Abstraction Layer ) တွေလို့ ခေါ်ပါတယ်။ Game Developer တွေနဲ့ Programmer တွေနဲ့ ဆက်သွယ်ဖို့အတွက် API Layer နဲ့ပဲ ဆက်သွယ်ဖို့ လိုပါတယ်။ API Layer ကမှ HAL နဲ့ ဆက်သွယ်ပြီး Hardware တွေနဲ့ တိုက်ရိုက်ချိတ်ဆက်မှာ ဖြစ်ပါတယ်။ ဒီတော့ တွေးကြည့်ရင် HAL က Hardware တွေနဲ့ တိုက်ရိုက်ဆက်သွယ်ရမှာ ဆိုတော့ သူက Hardware တွေအတွက် DirectX HAL နဲ့ ကိုက်ညီမှုရှိတဲ့ Device Driver တွေကို ဖန်တီးပေးကြပါလိမ့်မယ်။ DirectX Compatible Hardware ဆိုတာ အဲ့ဒါမျိုးတွေပေါ့။ ဒါကြောင့် ကျွန်တော်တို့က DirectX Game တစ်ခုကို ဖန်တီးတော့မယ်ဆိုရင် HAL နဲ့ တိုက်ရိုက်ဆက်သွယ်စရာ မလိုပါဘူး။ DirectX Version အဟောင်းမှာတုန်းက HEL ( Hardware Emulation Layer ) ဆိုတာ သုံးခဲ့ပါသေးတယ်။ အခု နောက်ပိုင်း Version တွေမှာ မသုံးတော့ပါဘူး။ ဒါကြောင့် အဲ့ဒါအကြောင်းကို အသေးစိတ်မပြောတော့ဘူးနော့်။ နောက်ပိုင်း DirectX Version တွေမှာ HEL အစား Pluggable Software Device ဆိုတဲ့ နည်းပညာ အစားထိုးခဲ့ပါတယ်။ အဲ့ဒါနဲ့ ပက်သက်ပြီး အသေးစိတ်သိချင်ရင် DirectX Device Driver Kit ( DDK ) မှာပါတဲ့ Decoumentation ကိုပဲ ဖတ်ကြည့်ပါနော့်။ ဗားရှင်းမြင့်လာလေလေ ပေးအပ်ထားတဲ့ လုပ်နိုင်စွမ်းလည်း များများလာလေ ဖြစ်ပါတယ်။ နောက်ဆုံးထွက် DirectX Version နဲ့ အလုပ်လုပ်နိုင်ဖို့အတွက် အဲ့ဒီ DirectX ကို Support လုပ်တဲ့ Hardward တော့ ဖြစ်ရပါမယ်။ ဉပမာ- Nvidia Geforce 4 Ti နဲ့ Geforce Fx (5) က မြန်နှုန်းCore Speed အတူတူပါပဲ။ ဒါပေမဲ့ Geforce 4 Ti က DirectX 8 ကိုပဲ Support လုပ်ပြီး Geforce FX တွေက DirectX 9 Interface တွေကို ကောင်းကောင်း Support လုပ်ပါတယ်။ ဒါကြောင့် ဘယ်လိုပဲဖြစ်ဖြစ် DirectX 9 ကိုသုံးပြီး ဖန်တီးထားတဲ့ Application တွေကို Run မယ်ဆိုရင် Geforce FX က Geforce 4 ထက်ပိုကောင်း၊ ပိုတိကျတဲ့ ပုံရိပ်တွေကို ရမှာ အသေချာပါပဲ။ အဲ့လောက်ဆို သဘောပေါက်လောက်မယ် ထင်ပါတယ်နော့်။


Credit : Origin Writer



Posted By

<<  HTAR WAIE THAR  >>

Ko Ko Zaw ( BE-EC )           www.htarwaiethar.org

0 comments:

Post a Comment