this site the web

771..DirectX ဆိုသည္မွာ..( 24.6.10 )

 


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 ကိုပဲ ဖတ္ၾကည့္ပါေနာ္။

ေနာက္ဆံုးထြက္ DirectX version က DirectX 10 ပါ။ 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 ထက္ ပိုေကာင္း၊ ပိုတိက်တဲ့ ပံုရိပ္ေတြကို ရမွာ အေသအခ်ာပါပဲ။
Ref:Ko Myat

Labels:

Print ပဲထုပ်ပါ..pdf ထုပ်လျှင်.ဖောင့်လွဲနေလိမ့်မယ်



မာတိကာ ၁ မာတိကာ ၂ မာတိကာ ၃ မာတိကာ ၄ မာတိကာ ၅

1 - ဦး မှတ်ချက်ပေးထားပါသည်

Blogger Unknown said...

အခုလိုသိခြင့္ရတဲ့အတြက္ေက်းဇူးအမ်ားၾကီးတင္ပါတယ္

20/3/11 3:43 PM  

Post a Comment

KKZ Myanmar Unicode Keyboard

Mone Tine On Android

►Version 1.1

►Version 1.0

MoneTineKeyboard

Like လုပ်ထားနိုင်ပါတယ်

Mone Tine Knowledge Bank

Labels

အောက်ကကြေငြာလေးကလစ်ပေးပါဦး

Usage Policies

သင်၏ Facebook  တွင် ဖတ်နိုင်ရန် LIKE လုပ်ခဲ့ပါ..
( အမှန်ခြစ် ပေါ်နေပြီး LIKE ပြီးသားပါက CLOSE ကိုသာနှိပ် ပိတ်ပါ )

ကျေးဇူးတင်ပါတယ် မုန်တိုင်း

ကျန်းမာကြပါစေ