Friday, April 25, 2014

Direct X ဆိုတာ























DirectX ဆိုတာ ဘာလဲ တဲ့ အခု မသိသေးသူများလဲ သိရလေအောင် ဒါကို သဘောပေါက်လောက်အောင် ပြောပေးလိုက်ပါတယ် DirectX ဆိုတာMicrosoft က ဖန်တီးပေးထားတဲ့ API (Application Programming Interface) အစုအဝေးတစ်ခုပါ။

Microsoft က low-level programming အသေးစိတ်ကို လုပ်ဆောင်ပေးထားပြီး application programmer တွေက အဲဒီ API တွေကို သူတို့ရဲ့multimedia နဲ့ game program တွေမှာ စိတ်တိုင်းကျ ယူသုံးနိုင်ပါတယ်။
နာမည်ကြီး Microsoft Windows operating system တွေမှာDirectX ကို တစ်ပါထဲ ထည့်ပေးလိုက်လေ့ ရှိပါတယ်။

New versionကိုလည်း နောက်ပိုင်းမှာ ထပ်ပြီး install လုပ်လို့လည်း ရပါတယ်။

DirectX API တွေက multimedia နဲ့ game application developerတွေကို hardware devices တွေနဲ့ ဆက်သွယ် လုပ်ဆောင်ဖို့ တဲ့နေရာမှာlow-level interface တွေရဲ့ အစားထိုး အနေနဲ့ အသုံးပြုခွင့်ပေးနိုင်ဖို့ အတွက် design လုပ်ထားတာ ဖြစ်ပါတယ်။

ဒီတော့ game developer (programmer) တွေအနေနဲ့hardware တွေရဲ့ အသေးစိတ်ကို သိစရာမလိုပဲ၊ hardware specific codes တွေကို ရေးနေစရာ မလိုပဲနဲ့ DirectX 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 codes တွေကို ရေးဖို့ မလိုတော့မှာပေါ့။

ပထမဆုံးအနေနဲ့ Microsoft ဟာ Game Software Development Kit (GSDK) ကို ဖန်တီး ပေးခဲ့ပါတယ်။

ဒါဟာ တစ်ကယ်တော့ DirectX 1 ပါပဲ။ ပထမဆုံး ထွက်လာတဲ့ အဲဒီ DirectX 1 မှာ ကန့်သတ်ချက်တွေ၊ အားနည်းချက်တွေ အများကြီး ရှိနေပါတယ်။

ဒါပေမယ့် DirectX 1 က developer တွေအတွက် သူတို့ရဲ့ application တွေနဲ့ hardware device တွေကြားမှာ common layer အလွှာ တစ်ခုအနေနဲ့ အလုပ်လုပ်ပြနိုင်ခဲ့ ပါတယ်။

ဒါကြောင့် developer တွေအတွက် hardware တွေနဲ့ ဆက်သွယ်လုပ်ဆောင်ရတာ အရမ်းကို လွယ်ကူ သွားစေခဲ့ ပါတယ်။

ဒါကြောင့်် ပထမဆုံး ထွက်လာတဲ့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 တွေက လှမ်းခေါ်ပြီး ရယူ အသုံးပြုနိုင်တဲ့ methods (functions) တွေ အများကြီး ပါပါတယ်။

DirectX COM objects တွေဟာ အသစ် ထပ်ထည့်လိုက်လို့ interface အသစ်တွေ ပါလာရင်တောင်မှ အရင် interface အဟောင်း တွေကိုလည်းလုံးဝ အလုပ်လုပ် ပေးနိုင်ပါတယ်။

COM object နည်းပညာကို အသုံးပြုတဲ့ နောက်ထပ် ကောင်းတဲ့ အချက်က COM object တွေဟာ သူတို့ကို ဘယ် programming language ကနေမဆို လှမ်းခေါ်ပြီး သုံးလို့ရပါတယ်။

ကန့်သတ်ချက် မရှိပါဘူး။ (COM အကြောင်းကို အသေးစိတ် သိချင်ရင် စာအုပ်တွေ ရှိပါတယ်။ လေ့လာကြည့်ပါ။)



လက်ရှိ DirectX နည်းပညာကို layer နှစ်ခုနဲ့ တည်ဆောက်ထားပါတယ်။

API Layer နဲ့ HAL (Hardware Abstraction Layer) တွေလို့ ခေါ်ပါတယ်။

Game developer တွေနဲ့ programmer တွေက hardware တွေနဲ့ ဆက်သွယ်ဖို့အတွက် API layer နဲ့ပဲ ဆက်သွယ်ဖို့ လိုပါတယ်။

API Layer ကမှ HAL နဲ့ ဆက်သွယ်ပြီး hardware တွေနဲ့ တိုက်ရိုက် ချိတ်ဆက်မှာ ဖြစ်ပါတယ်။

ဒီတော့ တွေးကြည့်ရင် HAL က hardware တွေနဲ့ တိုက်ရိုက် ဆက်သွယ်ရမှာ ဆိုတော့ သူက hardware တွေ အကြောင်းကို သိဖို့ လိုတာပေါ့နော်။ ဒီအတွက် hardware deviceထုတ်လုပ်သူတွေက သူတို့ရဲ့ hardware တွေအတွက် DirectX HAL နဲ့ ကိုက်ညီမှုရှိတဲ့ device driver တွေကို ဖန်တီးပေးကြပါ လိမ့်မယ်။

DirectX compatible hardware ဆိုတာ အဲဒါမျိုးတွေပေါ့။

ဒါကြောင့် ကျွန်တော်တို့က DirectX game တစ်ခုကို ဖန်တီးတော့မယ် ဆိုရင် HAL နဲ့ တိုက်ရိုက် ဆက်သွယ် အလုပ်လုပ်ဖို့ မလိုပါဘူး။

API Layer ကပေးထားတဲ့ interface တွေ၊ function တွေနဲ့ပဲအလုပ်လုပ်နိုင်တယ်ဆိုရင် ရပါပြီ။

ဟိုးအရင် DirectX version အဟောင်းမှာတုန်းက HEL (Hardware Emulation Layer) ဆိုတာ သုံးခဲ့ပါသေးတယ်။

အခု နောက်ပိုင်းVersion တွေမှာ မသုံးတော့ပါဘူး။ ဒါကြောင့် အဲဒါ အကြောင်းကို အသေးစိတ် မပြောတော့ဘူးနော်။

နောက်ပိုင်း DirectX version တွေမှာ HEL အစားPluggable Software Device ဆိုတဲ့ နည်းပညာကို အစားထိုးခဲ့ပါတယ်။

အဲဒါနဲ့ ပတ်သက်ပြီး အသေးစိတ် သိချင်ရင် DirectX Device Driver Kit (DDK) မှာပါတဲ့ documentation ကိုပဲဖတ်ကြည့်ပါနော်။

Version မြင့်လာလေလေ ပေးအပ်ထားတဲ့လုပ်ဆောင်နိုင်စွမ်း တွေလည်းများများလာလေဖြစ်ပါတယ်။

နောက်ဆုံးထွက် DirectX versionနဲ့ အလုပ်လုပ်နိုင် ဖို့အတွက် အဲဒီ DirectX ကို support လုပ်တဲ့ hardware တော့ ဖြစ်ရပါမယ်။

ဥပမာ- Nvidia Geforce 4 Ti နဲ့ Geforce FX (5) နဲ့ က အမြန်နှုန်း core clock speed မှာအတူတူ ပါပဲ။

ဒါပေမယ့် Geforce 4 Ti က DirectX 8 ကိုပဲ support လုပ်ပြီး၊Geforce FX တွေက DirectX 9 interface တွေကို ကောင်းကောင်း support လုပ်ပါတယ်။ဒါကြောင့် ဘယ်လိုပဲ ဖြစ်ဖြစ် DirectX 9 ကိုသုံးပြီး ဖန်တီးထားတဲ့ application တွေကို run မယ်ဆိုရင် Geforce FX က Geforce 4 ထက် ပိုကောင်း၊ ပိုတိကျတဲ့ ပုံရိပ်တွေကို ရမှာ အသေအချာပါပဲ။ဒီလောက်ဆိုရင် သဘောပေါက်လောက်မယ်ထင်ပါတယ်နော်။



Crdeit ::  Unknown


Posted By

<<  HTAR WAIE THAR  >>

Ko Ko Zaw ( BE-EC )    www.htarwaiethar.blogspot.com

0 comments:

Post a Comment