Wednesday, December 24, 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  >>

No comments:

Post a Comment