အဲဒီ 3D graphic API ႏွစ္ခုက DierctX နဲ႔ OpenGL (Open Graphic Libraries) ေတြပဲ ျဖစ္ပါတယ္။ DirectX API ကို Microsoft က ဖန္တီးထားတာ ျဖစ္ၿပီး Microsoft ရဲ႕ propriety မူပိုင္ျဖစ္ပါတယ္။ လက္ရိွ ေနာက္ဆံုး DirectX version က DirectX 11 ျဖစ္ပါတယ္။ DirectX API ဟာ Microsoft ရဲ႕ မူပိုင္ျဖစ္တဲ့အတြက္ Windows OS ေတြမွာပဲ အလုပ္လုပ္ ပါလိမ့္မယ္။ Microsoft ကေန ေထာက္ပံ့မႈ အျပည့္အ၀နဲ႔ အႀကီးအက်ယ္ ေပးထားတဲ့ multimedia library တစ္ခု ျဖစ္ပါတယ္။ DirectX က Windows ေတြမွာပဲ အလုပ္လုပ္တယ္ ဆိုေပမယ့္ Wine လိုမ်ိဳး emulator software ေတြကို သံုးၿပီး Unix platform ေပၚမွာ အလုပ္လုပ္ၾကည့္မယ္ ဆိုရင္လည္း ရႏိုင္ပါတယ္။
DirectX ကို Windows operating system ေတြနဲ႔ PC ေတြမွာတင္ သံုးတာ မဟုတ္ပါဘူး။ 3D graphic ေတြကို ဖန္တီးဖို႔ အတြက္ XBOX game စက္ေတြနဲ႔ Sega က ထုတ္တဲ့ Dreamcast လိုမ်ိဳး game စက္ေတြမွာ လည္း သံုးထား ပါတယ္။
OpenGL ကေတာ့ နာမည္မွာ ပါတဲ့အတိုင္း Open Source graphic library API တစ္ခုပါ။ သူ႔ကို Silicon Graphics Inc ကေန ဖန္တီးထားတာပါ။ အခုဆိုရင္ OpenGL က research ပိုင္းေတြနဲ႔ virtual reality ပိုင္းမွာပါ industrial standard ျဖစ္လာေနပါၿပီ။ ေနာက္ဆံုးထြက္ OpenGL version က 3.0 ျဖစ္ၿပီး OpenGL 4.0 လညး္ မၾကာခင္ ထြက္လာေတာ့ မွာပါ။
DirectX နဲ႔ တစ္ခုကြာတာက OpenGL က cross-platform ျဖစ္ပါတယ္။ OpenGL architecture review vote အဖြဲ႕အစည္းက OpenGL အတြက္ specification အသစ္ေတြ၊ standard အသစ္ေတြ ကို ျဖည့္ဆည္း ေပးေနပါတယ္။ လက္ရိွ OpenGL ရဲ႕ ေနာက္ဆံုး version က 3.0 ျဖစ္ပါတယ္။ ေယဘူယ် ၾကည့္မယ္ဆိုရင္ OpenGL က DirectX ေလာက္ အေျပာင္းအလဲ မမ်ားဘူးလို႔ ေတြ႕ရပါတယ္။ OpenGL ကို Sony က ထုတ္တဲ့ PlayStation game စက္ေတြမွာလည္း သံုးထားတာ ေတြ႕ ႏိုင္ပါတယ္။ Research area ေတြနဲ႔ academic project ေတြမွာ OpenGL ကို တြင္က်ယ္စြာ သံုးတတ္ပါတယ္။ ၿပီးေတာ့ တစ္ျခား open source graphics libraries ေတြကလည္း OpenGL ကို သံုးပါတယ္။ Apple iPhone လို mobile device ေတြမွာ ေတာင္ OpenGL ES (Embedded Systems) ကို သံုးထားတာ ေတြ႕ႏိုင္ ပါတယ္။
Programmer ေတြအတြက္ကေတာ့ အဆင့္ျမင့္ 3D graphic ေတြကို ဖန္တီးတဲ့ ေနရာမွာ OpenGL ပဲျဖစ္ျဖစ္ DirectX ပဲျဖစ္ျဖစ္ သံုးႏိုင္ပါတယ္။ API တစ္ခုစီကို programming language ကေန ေခၚသံုးတဲ့ ေနရာမွာ အသံုးျပဳရတဲ့ အယူအဆ သေဘာတရားေတြ မတူပါဘူး။ Program သြင္းရတာလည္း နဲနဲေတာ့ ကြာျခားပါတယ္။ 3D coordinate system တစ္ခုအတြက္ သတ္မွတ္တဲ့ အယူအဆ သေဘာ ေတြေတာင္ မတူတာ ကို ေတြ႕ရပါတယ္။ ဒါေပမယ့္ 3D graphic သီအိုရီ ေတြ၊ transformation mathematics ေတြနဲ႔ lighting အေျခခံ သေဘာတရားေတြ ကေတာ့ အတူတူပါပဲ။
ႏိႈင္းယွဥ္ၾကည့္မယ္ ဆိုရင္ေတာ့ DirectX က Microsoft ရဲ႕ hardware level အထိ accelerate လုပ္ေဆာင္ ခ်က္ေတြ ရဖို႔ ႀကိဳးပမ္းမႈ ျဖစ္ပါတယ္။ ေစ်းကြက္ ထဲမွာ ေတြ႕ေနရတဲ့ graphic hardware ေတြ အားလံုးနီးပါးက DirectX (Ditrect3D) ရဲ႕ လုပ္ေဆာင္ခ်က္ေတြကို စံတစ္ခု အေနနဲ႔ကို hardware level မွာ အရိွန္ျမွင့္ လုပ္ေဆာင္ေပးမယ့္ hardware accelerator ေတြကို ထည့္သြင္းေပး ထားတတ္ပါတယ္။
OpenGL က တစ္ကယ္တမ္း ေျပာရရင္ graphic အတြက္ rendering standard တစ္ခုပါ။ ဒါေပမယ့္ ေနာက္ပိုင္းမွာ graphic hardware ထုတ္လုပ္သူေတြက Direct3D လုိပဲ OpenGL ရဲ႕ လုပ္ေဆာင္မႈ ေတြကို အရိွန္ျမွင့္ၿပီး လုပ္ေဆာင္ေပးမယ့္ hardware accelerator ေတြကို သူတို႔ရဲ႕ devices ေတြထဲမွာ ထည့္သြင္း ေပးလာၾကပါတယ္။
ဥပမာ- Nvidia က ထုတ္တဲ့ Geforce graphic processor ေတြနဲ႔ ATI က ထုတ္တဲ့ Radeon graphic processor ေတြမွာဆိုရင္ DirectX လုပ္ေဆာင္ ခ်က္ေတြကိုေရာ OpenGL လုပ္ေဆာင္မႈ ေတြကိုပါ တိတိ က်က် ျမန္ျမန္ ဆန္ဆန္ လုပ္ေဆာင္ေပးႏိုင္မယ့္ hardware accelerator ေတြ ပါတာကို ေတြ႕ႏိုင္ ပါတယ္။ ဒါကို Hardware TnL (Transformation and Lighting) လို႔ေခၚပါတယ္။
လက္ရိွ အေျခအေနအရ Direct3D နဲ႔ OpenGL graphic API ေတြဟာ တစ္ကယ့္ကို ၿပိဳင္ဘက္ေကာငး္ ေတြျဖစ္ပါတယ္။ ဘယ္သူမွ အျပတ္အသတ္ အသာစီး မရေသးပါဘူး။ Standard ႏွစ္ခု လံုးက အရမ္းကို ေကာင္းၾကၿပီး လုပ္ေဆာင္ႏိုင္စြမ္း နဲ႔ အသံုးျပဳရမႈ တို႔မွာ သူ႔အပိုင္းနဲ႔ သူ ေကာင္းၾကတာကို ေတြ႕ႏိုင္ပါတယ္။
OpenGL က cross-platform နဲ႔ open source ျဖစ္တဲ့အတြက္ research က႑ေတြ၊ virtual reality စမ္းသပ္မႈေတြနဲ႔ academic ပိုင္းေတြမွာ အသံုးမ်ားတာ ေတြ႕ရပါတယ္။ DriectX ကေတာ့ Microsoft က အႀကီးအက်ယ္ support ေပးထားတဲ့အတြက္ လက္ေတြ႕ ေစ်းကြက္ ထဲက software ေတြ၊ အထူးသျဖင့္ multimedia နဲ႔ game ေတြမွာ အႀကီးအက်ယ္ သံုးတာကို ေတြ႕ႏိုင္ပါတယ္။
ေနာက္ဆံုး version ေတြျဖစ္တဲ့ DirectX 11 နဲ႔ OpenGL 3 တုိ႔အတြက္ hardware acceleration ကို အျပည့္အ၀ လုိခ်င္တယ္ ဆိုရင္ေတာ့ ေနာက္ဆံုးထြက္ graphic hardware ေတြကို သံုးဖို႔ လိုအပ္ပါ လိမ့္မယ္။ ဥပမာ- Nvidia က Geforce ဆိုရင္ 400 series ေတြနဲ႔ ATI Radeon ဆိုရင္ Radeon 5000 series ေတြကို သံုးရပါမယ္။
ကၽြန္ေတာ္တို႔ ဘယ္ graphic API ကို သံုးမလည္း။ DirectX လား၊ OpenGL လား….?


0 comments:
Post a Comment