کمي در مورد رابط هاي برنامه نويسي گرافيک سه بعدي
مترجم: مريم موسوي
روزگاري openGL در رأس رابط هاي برنامه نويسي گرافيک سه بعدي قرار داشت اما امروز اغلب سازندگان بازي هاي رايانه اي دنيا به واسط برنامه نويسي Direvt3dروي آورده اند و به نظر مي رسد که اين کتابخانه گرافيکي کدباز، ديگر طرفداري ندارد. Ben Hardwidge در اين مقاله سعي دارد به واکاوي علل اين تغيير گرايش و اقبال شديد برنامه نويسان به واسط Direct3d بپردازد.
متخصصاني چون John Cleese با چنين ادعايي مخالف اند و بر اين باورند که اين کتابخانه گرافيکي کدباز همچنان در ميان دست اندرکاران برنامه نويسي سه بعدي محبوبيت دارد و openGL مخصوص سيستم هاي توکار اين حقيقت را به اثبات رسانده است و نشان داده که همچنان در ميان سازندگان بازي هاي موبايل طرفدار دارد. شکي نيست که از محبوبيت اين واسط سه بعدي در ميان برنامه نويسان کاسته شده است با اين حال به منظور جلوگيري از هرگونه پيش داوري و قضاوت نادرست بگذاريد اندکي موضوع را بشکافيم. اگر بازي هاي مبتني بر موتورهاي id Tech بازي آنلاين دنياي جنگ افزار (world of Warcraft) و بازي هاي نه چندان مشهوري چون Minecraft که هر چند وقت يکبار از سوي شرکت هاي کوچک وارد بازار مي شوند را کنار بگذاريم درخواهيم يافت که امروزه اغلب بازي هاي رايانه اي با استفاده از واسط برنامه نويسي سه بعدي مايکروسافت موسوم به Microsiftُs Direct3D API ساخته مي شوند.
امروزه بازاريابي و فروش معماري هاي نوين GPuها يا (واحدهاي پردازش گرافيکي) بر اساس نوع نسخه واسط DirectX که از نظر سخت افزاري پشتيباني مي شود صورت مي گيرد و چنانچه اين بازي از جديدترين نسخه DirectX پشتيباني کند بازي فروش بيشتري خواهد داشت.
در مبحث بازي هاي رايانه اي چنانچه در مقام مقايسه ميان اين دو وسط برنامه نويسي برآييم Direct3d به مسافري مي ماند که در ليموزين خود لم داده و openGL به موتور سواري که در تکاپوي رسيدن به آن است. 12 سال قبل اين API در مقايسه با openGL و Glide ساخت شرکت3dfx interactive حرفي براي گفتن نداشت و امروز صدرنشين است. حال علت روي گرداني سازندگان بازي هاي رايانه اي از openGL چيست؟
در آن زمان براحتي مي توانستيم حس رقابت ميان اين دو واسط برنامه نويسي سه بعدي را با تمام وجود حس کنيم. کافيست نگاهي به بازي علمي تخيلي نيمه جان يا Half-Life بياندازيد که کمپاني Valve Software آن را به بازار عرضه کرد. در اين بازي کاربر تنها مي تواند رزولوشن و تنظيمات گرافيکي را به دلخواه تغيير دهد بلکه اين امکان را دارد که حالت ويرايش يا rendering Mode را هم فعال نمايد. اين بازي هر دو واسط رقيب آن زمان و همچنين سيستم 3dfx mini-GL را پشتيباني مي کرد اما بايد اعتراف کرد که openGL عملکرد بسيار بهتري را از خود به نمايش مي گذاشت. البته بايد امکان تصوير سازي نرم افزاري يا software Rendering را هم به اين قابليت ها افزود که شايد اهميت آن از همه بيشتر باشد، در آن زمان خوره هاي بازي کارت هاي گرافيکي سه بعدي يا 3D Accelerators را از جمله امکانات لوکس يک بازي و عاملي براي برتري آن قلمداد مي کردند تا يک ويژگي استاندارد براي تمامي چيپ هاي گرافيکي بنابراين سازندگان بازي هاي رايانه اي بايد از آن پس قابليت پشتيباني نرم افزاري و سخت افزاري تصويرهاي گرافيکي سه بعدي را نيز به بازي هاي خود مي افزودند. اين امر در اواخر دهه 1990 ميلادي براي تمامي کتابخانه هاي گرافيکي سه بعدي محقق شد اما پشتيباني از تصويرسازي نرم افزاري يا همان software rendering به وجه تمايز ميان openGL و Direct3D تبديل شد. در اصل openGL تصوير سازي نرم افزاري را پشتيباني مي کرد اماDirect3D تا يک دهه قبل از آن چنين قابليتي نداشت.
بنابر اظهارات Richard Huddy مدير روابط عمومي شرکت AMD در توضيح پيرامون واحدهاي پردازش گرافيکي يکي از برترين قابليت هاي DirectX آن است که امکان افت عملکرد GPU و جايگزيني آن با واحد CPU که اصطلاحاً به آن نرم افزار جايگزين يا Software Fallback گفته مي شود را به صفر مي رساند (بهتر آن است که در هنگام ويرايش تصاوير يا رندرينگ بگذاريد که CPU اين کار را انجام دهد و در صورتي که اين واحد از انجام کار عاجز ماند ادامه فرايند توسط واحد جايگزين CPU انجام خواهد شد.) متخصصين بازي هاي رايانه اي به خوبي امر آگاهند که يک پيکسل مطابق با شرايط و ويژگي ها RENDER مي شود و جزئيات بدان افزوده مي شوند که به اين منظور مي توان از Software Fallback کمک گرفت. اما بايد آگاه بود که اين روش در ساخت بازي هاي رايانه اي پاسخگو نخواهد بود. به خاطر مي آورم که در زمان رونق واسط هاي Direct3D و5 اغلب افراد از من سؤال مي کردند که اگر نرم افزار قادر به انجام فلان کار نباشد مي توانيم از نرم افزار جايگزين کمک بگيريم؟ و من صراحتاً پاسخ مي دادم خير و در مورد محصول مايکروسافت که همان DirectX باشد هم پاسخ با قاطعيت خير خواهد بود.
با توجه به سازگاري با سيستمهاي قديمي و قابليت انطباق فناوري هاي امروزي با ورودي هاي قديمي به نظر مي رسد که اين روند همچنان ادامه داشته باشد. واسط openGL نيز بايد چنين قابليتي را دريافت کند و اين اطمينان را به متخصصان بازي هاي سه بعدي بدهد که امکان پشتيباني از برنامه ها و کدهاي نوشته شده جديد را داراست. با وجود آنکه چندي پيش شرکت khronos Group اعلام کرد که بخش اعظمي از کدهاي زبان اصلي اين واسط را حذف کرده اند و برخي سازندگان بازي هاي رايانه اي همچنان بر اين باورند که اين امر کافي نبوده و اين واسط همچنان داراي ايراداتي است.
مدير تحقيق و توسعه فني شرکت Crytek بر اين معتقد است که DirectX اهميتي به مقوله سازگاري با سيستمهاي قديمي ميان نسخه هاي عمده اين واسط نمي دهد. براي مثال Direct3D 9 و10 تفاوت قابل ملاحظه اي با يکديگر دارند و با وجود آنکه در وهله اول اين اختلاف فاحش ممکن است براي سازندگان بازي هاي رايانه اي آزار دهنده باشد با اين حال api را تميزتر و پايدارتر کرده و اين امکان را به آنها مي دهد که اشتباهات طراحي کارهاي قبلي خود را ويرايش نمايند. سازگاري سپس اهميت فراواني براي صنايع سه بعدي مجزا از بازي هاي رايانه اي دارد و تا به حال اين حجم تغيير و حذف کد در openGL صورت نگرفته بود. بي شک openGL3 نسبت به نسخه هاي اوليه پيشرفت هايي داشته است اما عليرغم حذف برخي امکانات قديمي از پروفايل اصلي اين واسط همچنان سبک اين API به همان شکل قديمي است.
در اواخر دهه 1990 ميلادي، بازي هاي سه بعدي بيشتر بر روي Glide API يا openGL اجرا مي شد تا DirectX پس از آن id Software در صدرموتورهاي سه بعدي جاي گرفت و موتور موسوم به Quake engine را براي بازي تيراندازي Quake نوشت و براي اين منظور استاندارد openGL بهره گرفت. همانگونه که کارمک اشاره مي کند تا مدتها openGL به ويژه از لحاظ عملکرد از Direct3D پيش بود.
اگر چنين بوده باشد عقلاني تر است که سازندگان بازي هاي بسيار پيشرفته رايانه اي در آن زمان openGL استفاده کنند و نه رقيب آن. با اين حال اگر امروز نگاهي به ويژگي هاي اين واسط برنامه نويسي بياندازيم درمي يابيم که اين واسط از نظر برخورداري از امکانات سخت افزاري سه بعدي تنها اندکي با رقيب خود فاصله دارد و به تدريج در حال رسيدن به آن است.
مايکل هودي مدير تحقيق و توسعه فني شرکت Crytek همچنين بر اين باور است که طي ده سال اخير اين شرکت مايکروسافت بوده است که در عرصه گرافيک ابتکار عمل را به دست گرفته است و openGL به جاي آنکه خود ابتکار عمل را در دست بگيرد و متدهاي جديد ابداع کند بيشتر دنباله رو مايکروسافت بوده است. براي مثال اين مايکروسافت بود که براي نخستين بار ابزار سايه زني اشکال هندسي را به همراه Vista , DirectX ابداع و عرضه کرد که بعدها تمامي امکانات شگفت انگيز خود را در openGL به نمايش گذاشت. وي همچنين خاطرنشان کرد که ساخت امکاناتي نظير سايه زني اشکال هندسي يا همان geometry shading نه تنها مديون ابتکار شرکت مايکروسافت بلکه حاصل زحماتي است که سازندگان بازي هاي رايانه اي و واحدهاي پردازش گرافيکي (GPU) عضو هيئت مشاوران گرافيک، در جلسات اين شرکت متحمل مي شدند.
بنابراين شايد در نگاه نخست اينگونه به نظر بيايد که امکانات openGL با DirectX در يک سطح قرار داشته و با يکديگر برابري مي کند اما بخش اعظمي از اين قابليت ها در آينده محقق خواهد شد و در حال حاضر اين دو در يک سطح قرار ندارند. براي مثال در ابتدا گفته شد که نسخه openGL 3.2 از ابزار سايه زني اشکال هندسي پشتيباني مي کنند اما اينگونه نبود و اين امر تا آگوست سال 2009 ميلادي محقق نشد يعني در حدود يک سال و نيم پس از انتشار DirectX10 به همراه ويندوز ويستا. معرفي اين امکانات به همان سادگي که در ذهن شما نقش مي بندد نيست. پشتيباني از شيدر يا ابزارهاي سايه زني جديد جز لاينفک واسط DirectX محسوب مي شود با اين حال امکان بکارگيري فناوري هاي نويني از اين دست تنها از طريق سيستم هاي ضميمه اي امکان پذير خواهد بود.
کريس ديلي طراح و سازنده ارشد بازي هاي رايانه اي شرکت Introversion در توضيح اين مطلب اظهار مي دارد که اين سيستم ضميمه اي در حدود 15 سال پيش نوشته شد يعني مدت ها پيش از آنکه شيدر اختراع شود. اين سيستم در ابتدا براي ضميمه هاي غيرمنتظره و ناگهاني به پلتفرم که در هر لحظه احتمال انجام آن مي رود طراحي شد اين در حالي است که اگر امروز موتور گرافيکي خود را در openGL بنويسيد موتور گرافيکي تعريف شده به طور کلي از طريق همان سيستم ضميمه اجرا خواهد شد. اين مسأله آنچنان هم پيچيده نبوده بلکه بسيار ساده است اما در بازي هاي مشخصي چون Darwinia که سبک هاي گرافيکي مختص به خود را دارند به هيچ وجه از شيدر استفاده نمي شود. در حقيقت اين بازي ابتدا به زبان openGL نوشته شد و بعدها به زبان DirectX منتقل شد. با اين حال سيستم هاي ضميمه اي مي توانند براي سازندگان بازي هاي پيشرفته رايانه اي آزاردهنده باشند. و اين امر تنها بدان دليل نيست که اين سيستمها روشي قديمي براي استفاده از شيدرها در APIها هستند.
هودي در ادامه صحبت هاي خود اشاره مي کند که هيچگونه رقابتي ميان ضميمه ها وجود ندارد و يکي از وحشتناک ترين مسائل در مورد openGL آن است که ضميمه ها هم نقطه اين واسط محسوب مي شوند و هم بخشي از مشکلات آن. گاهي اوقات توانايي يک قطعه سخت افزاري از openGL بيشتر است و مجبور خواهد شد که براي رفع اين کاستي از ضميمه (extension) استفاده کنيد و اين امر بسيار عادي است. اما مشکل آنجاست که ضميمه ها به تاييد مرجع خاصي نرسيده اند و تنها به طور شخصي مورد استفاده قرار مي گيرند بنابراين انتخاب ضميمه مناسب براي يک فروشنده مستقل نرم افزار يا همان ISV بسيار دشوار خواهد بود. حال اين پرسش مطرح مي شود که يک سازنده بازي رايانه اي کدام ضميمه را بايد انتخاب کرد تا با کارآمدي کامل تنظيمات ضميمه Vertex buffer يا ايجاد سطور را نيز انجام دهد. Nvidia يا AMD؟ رسيدن به پاسخي روشن براي اين پرسش امري است دشوار.
ابزار Vertex buffer به طور کامل در واسط openGL گنجانده شده است اما نکته مهم آن است که در وهله اول بايد امکانات نسبتاً جديدي مانند Tessellation (به معناي پر کردن يک سطح با اشکال هندسي) از طريق ضميمه ها بدان افزوده شوند و اين کار را براي تهيه کنندگان نرم افزار دشوار مي کنند به ويژه اگر پاي چندين ضميمه از افراد مختلف که احتمالاً به طريق گوناگون و در حوزه هاي مختلف فعال هستند در ميان باشد. ضميمه ها از برخي لحاظ مزيت براي openGL محسوب مي شوند. با اين حال در عين آنکه انعطاف پذيري را به واسط برنامه نويسي مي بخشند، به سازندگان بازي هاي رايانه اي اين امکان را مي دهد که چگونگي مديريت جنبه هاي مشخصي از Pipeline سه بعدي را خود انتخاب نمايند. کارمک با توجه به پيشرفت هاي حاصله در جديدترين موتور سه بعدي id که مبناي بازي جديد اين شرکت موسوم به Rage يا خشم را تشکيل خواهد داد اعلام کرد که همچنان اميدواريم که در آينده شاهد عرضه ضميمه هاي پيشرفته تري از VBL (قسمت هاي خالي عمودي) که همسان سازي را بهتر انجام مي دهند و احتمالاً تعدادي ضميمه براي دسترسي مستقيم به بافت يا Texture را به همراه دارند، باشيم.
با اين حال حتي اين مزيت واسط openGL نيز در حال کمرنگ تر شدن است چرا که بسياري از کارت هاي گرافيکي موجود در بازار داراي پشتيباني سخت افزاري مشابه به آن هستند، شايد معماري واحدهاي پردازش گرافيکي (GPU) در AMD , Nvidia با يکديگر متفاوت باشد با اين حال اين دو از نظر بنيادين از امکانات مشابهي پشتيباني مي کنند. براي نمونه هر دوي اين محصولات بايد قابليت پشتيباني از DirectX را داشته باشند و اين يکي از نقاط مشترکشان است. وي همچنين در ادامه صحبت هاي خود مي افزايد امروزه به دليل پوشش کامل فروشندگان و عرضه کنندگان بر تمامي محصولات گرافيکي، توانايي ساخت ضميمه اهميت و ارزش سابق را ندارد. در حقيقت شايد اينگونه به نظر برسد که openGL در مقايسه با رقيب خود در بسياري حوزه هاي ديگر نيز داراي کاستي هايي است.
مايکل گلاک پشتيباني اين واسط از (Multi-threading) و ثبات آن را از جمله نقاط ضعف openGL عنوان کرده و اظهار داشت که اين واسط عليرغم آنکه اخيراً دستخوش تحولات شگرفي شده و تغييرات عديده اي را به خود ديده است همچنان از Direct3D عقب است و از نظر امکانات کاملاً در يک سطح با آن قرار ندارد. کارمک نيز با تأييد گفته هاي گلاک، اضافه مي کند که واسط Direct3D عمل Multi-threading را بهتر انجام مي دهد و نسخه هاي جديدتر آن شرايط را بهتر مديريت مي کنند.
هودي بر اين باور است که بخش Direct Computer موجود در نسخه 11 واسط DirectX بهترين بخش آن محسوب مي شود. در مرحله پسا پردازش لايه پيوند داده شده، منطقي ترين راه براي ويرايش پيکسل ها و تبديل يک فرمت به فرمت ديگر، با افزودن افکت هاي مختلف نظير عمق بخشيدن به زمينه با محو کردن تصاوير استفاده از شيدر به هم پيچيده نيست چنانچه بخواهيد از شيدر استفاده کنيد بايد تمامي پيکسل هاي مجاور به يکديگر را برداشته از شيدر استفاده کنيد بايد تمامي پيکسل هاي مجاور به يکديگر را برداشته و تک تک آنها را پردازش کرده و آنها را به رنگ نهايي درآوريد که کاري است بس دشوار. اگر Computer Shader براي انجام اين کار استفاده کنيد نتيجه طبيعي تر خواهد بود. براي اين منظور نيازي به Z-buffer براي حجم بخشيدن به تصاوير نخواهيد داشت با اين حال اگر Computs Shader خود را به درستي نوشته باشيد مي توانيد چنين کاري را انجام دهيد.
هودي در ادامه صحبت هاي خود اظهار مي دارد که عمل پساپردازش GPGPU در openGL اندکي دشوارتر است با اين حال باز هم بايد يادآور شويم که پساپردازش قابليتي استاندارد که در واسط برنامه نويسي گنجانده شده باشد نيست. وي بر اين باور است که علت گرايش سازندگان بازي به openGL آن است که اين واسط از قابليت Direct Computs واحدهاي پردازش گرافيکي برخوردار بوده و کار با آن هم اندکي ساده تر است. اما اگر يک حساب سرانگشتي انجام دهيد علت اقبال اندک سازندگان مطرح کارمک نيز که براي سال هاي طولاني به openGL وفادار مانده است اذعان کرد که امروز واسط برنامه نويسي برتر همان D3D است. درحالي که شرکت مايکروسافت همچنان مصمم به اعمال تغييرات اساسي در DirectX براي بهبود عملکرد آن است، openGL همچنان از نظر سازگاري داراي مشکلات عديده اي است.
علي رغم برتري آشکار DirectX در ساخت بازي هاي رايانه اي، کارمک همچنان در ساخت اين بازي ها از openGL بهره مي گيرد و اين در حالي است که ساير سازندگان مطرح بازي هاي رايانه اي اين واسط برنامه نويسي متن باز را براي هميشه کنار گذاشته اند. از جمله اين سازندگان مطرح مي توان به شرکتcrytek اشاره کرد. بازي farCryکه از جمله محصولات مهم اين شرکت به شمار مي رود و با استفاده از واسط openGL نوشته شده است در حالي که بازي Crysis تنها بر روي Direct 3Dاجرا مي شد. در واقع دليلي براي آنکه اين دو زبان برنامه نويسي مجزا را پشتيباني کند وجود ندارد و شرايط اقتضا مي کرد که با استفاده از پيشرفته ترين واسط برنامه نويسي تهيه شود. در حقيقت openGL سال ها پيش از گردونه رقابت خارج شد و امکانات آن ديگر با رقيب خود برابري نمي کرد و تنها مدت زمان اندکي است که به تکاپو افتاده و در تلاش است تا خود را به رقيب ديرينه اش برساند.
هودي بهره برداري از يک نسخه جديد واسط DirectX را به بهره برداري از يک کنسول جديد تشبيه مي کند. به عقيده وي مشتريان سازندگان نرم افزار و توليد کنندگان سخت افزار از قابليت هاي بالقوه اين فناوري به وجد خواهد آمد. بهره برداري از يک نسخه جديد اين واسط معمولاً بر اساس يک جدول زمان بندي شده صورت مي گيرد که گاه نيز با بهره برداري از يک سيستم عامل جديد مصادف مي شود.
او در ادامه مي گويد ارائه محصولات شرکت مايکروسافت دقيقاً بر اساس زمانبدي هاي انجام شده آن صورت مي گيرد و معمولاً با معرفي يک سيستم عامل با نسخه به روز رساني شده DirectX مصادف مي شود و به اين ترتيب توليدکنندگان قطعات سخت افزاري و شرکاي اين شرکت مي توانند محصولات جديد خود را به صورت هدفمند به بازار ارائه کنند. اکنون در نظر داريم سيستم عامل جديد خود را که قرار است به همراه برخي قطعات سخت افزاري به بخش هاي مختلف دنيا ارسال شود را دو يا سه ماه زودتر آماده کنيم و در اين فاصله هماهنگي هاي لازم را با شرکت هاي تهيه کننده بازي هاي رايانه انجام دهيم تا مطمئن شويم که در موعد مقرر و همزمان با بهره برداري از اين سيستم عامل بازي آنها آماده خواهد بود. تمامي اين مذاکرات در جلسه سالانه اي که قرار است در آفريقا برپا شود يا در يک برنامه زماني شش ماهه صورت خواهد گرفت. قرار است که اين جلسه با حضور سازندگان نرم افزار، توليدکنندگان سخت افزار، و نمايندگان شرکت مايکروسافت و به منظور بحث و بررسي مشخصات و امکانات نسخه آينده DirectX برگزار شود. بر اساس گفته هاي اين مقام مسئول علت اصلي برپايي اين جلسات ساليانه ساخت يک نسخه جديد اين واسط به طور سالانه اين جلسات ساليانه ساخت يک نسخه جديد اين واسط به طور سالانه بود اما اين هدف محقق نشد و تقريباً هر سه سال يکبار شاهد ورود نسخه جديد اين واسط به بازار هستيم.
بنابراين همه شرکت ها مي توانند با اطمينان خاطر مطمئن باشند که هر سه سال يکبار نسخه جديد اين محصول به بازار عرضه مي شود و در نتيجه مي توانند ساخت محصولات جديد خود و بازاريابي آنها را به گونه اي تنظيم نمايند که مصادف با بهره برداري واسط جديد DirectX باشد. اينکه بتوان زمان ارائه نسخه جديد اين محصول به بازار را پيش بيني کرد مي تواند کمک شايان ذکري به شرکت هاي تهيه کننده نرم افزار کند. فرض کنيد شرکتي در نظر دارد يک قطعه جديد سخت افزاري را طراحي کند و زمان ورود نسخه جديد اين واسط از قبل مشخص است و شرکت هاي سازنده بازي هاي رايانه اي نيز ارائه بازي جديد خود را با ورود اين واسط جديد هماهنگ رايانه اي نيز ارائه بازي آن شرکت مفروض هم به طور مستمر عرضه نمي شوند و تنها در زمان هاي مشخصي که خريدار دارند مثلاً تعطيلي مدارس توليد مي شوند. مي توانيد تصور کنيد که اين بازي چقدر فروش خواهد داشت؟
اين امر تنها بر توليد کنندگان GPU و سازندگان بازي هاي رايانه اي اثر نمي گذارد. مصادف شدن بهره برداري از نسخه جديد واسط DirectX شرکت مايکروسافت با ورود يک سيستم عامل جديد به بازار با تبليغات مادربورد و قطعات کامپيوتري ديگر همراه شد و شرکت هاي توليد کننده اين قطعات در تبليغات خود مدعي شدند که محصولاتشان پشتيباني لازم را از جديدترين امکانات اين سيستم عامل جديد خواهد کرد.
ايراد عمده استراتژي فروش مصادف شدن آن با بهره برداري از ويندوز ويستا بود. نصب کارت هاي گرافيکي چندگانه در درايور جديد اين ويندوز مشکلات فراواني را براي کاربران به وجود آورد و علاوه بر آن نسخه 10 واسط DirectX10 از دو ويرايشگر (renderer) استفاده کنند به وجود آورد و از سوي ديگر نسخه پرطرفدارتر DirectX9 هم تنها با سيستم عامل ويندوز XP سازگار بود.
عرضه ويندوز ويستا با هدف پشتيباني از DirectX مشکل بسيار بزرگي بود چرا که ويستا به سختي خود را يا اين واسط انطباق مي داد و مهم تر از آن شرکت مايکروسافت نسخه جديد DirectX را براي يک سيستم عامل جدي نشان کرده بود. اين مسأله نيز مشکل ساز مي شد چرا که ارائه آمار دقيقي از تعداد ماشين هاي مجهز به DirectX عملاً غير ممکن بود. با اين حال تيم طراح DirectX اشتباه خود را به روشني دريافتند و آن را برطرف نمودند. نسخه 11 اين واسط موسوم به DirectX11 هم بر روي ويندوز 7 و هم ويستا اجرا مي شد و بازي هاي فراواني را با خود به همراه داشت. در واقع هر دو بازي Battleforge ,Call of Pripyat پيش از ورود ويندوز 7 به بازار از واسط DirectX11 پشتيباني مي کردند.
خلاصه کلام آنکه براي نسخه جديد DirectX با استقبال کافي روبرو شود و سوددهي مناسبي داشته باشد بايد به دقت و هماهنگي انجام شود تا از اين طريق شرکت هاي سخت افزاري و نرم افزاري درگير نيز بتوانند محصولات خود را به فروش برسانند. حال بهره برداري از يک نسخه جديد DirectX را با نسخه جديد openGL که به تازگي زمزمه هايي در مورد ساخت آن از سوي شرکت سازنده اش به گوش مي رسد مقايسه کنيد. آنظور که گفته مي شود اين واسط قابليت پشتيباني از امکانات DirectX را هم داراست. مسلماً اينکه يک PC بازي جديد صرفاً به اين علت که از openGL 4 پشتيباني مي کنند دليل بر استقبال مخاطبان از آن نخواهد بود بلکه پشتيباني آن محصول از DirectX11 است که مي تواند به ويژه در زمان معرفي آن محصول مشتريان را به خود جلب کند.
به گفته Michael Glueck شمار بالاي بازي هاي رايانه اي توليد شده با استفاده از واسط Direct3D نشانگر اقبال فراوان دست اندرکاران صنعت ساخت بازي از اين محصول است چرا که اين واسط داراي ابزارهاي سودمندتري بوده و در کل کيفيت درايور گرافيک آن هم بيشتر است. واسط openGL نيز از قافله تغيير عقب نمانده و چندي است که در تلاش براي رسيدن به اين واسط است اما با سرعتي نسبتاً پايين تر.
کيفيت درايورهاي يک واسط موضوع بسيار مهمي است و openGL هم از اين لحاظ وضعيت ثابتي نداشته است. حتي امروز نيز اين اطمينان وجود ندارد که امکانات DirectX11 کاملاً با درايورهاي openGL همخواني داشته باشد و براي مثال مشخص نيست که آيا درايورهاي اين واسط قابليت انجام رفتار سطح سازي (Tessellation) را دارند يا خير.
کريس ديلي معتقد است که با وجود تمام اين مسائل پشتيباني درايور اين واسط نسبت به گذشته بهتر شده است. تقريباً زماني که DirectX نسخه5 يا 6 خود را منتشر کرد استقبال شديدي از اين واسط از سوي بسياري از سازندگان بازي هاي رايانه اي صورت گرفت چرا که در آن زمان openGL از نظر پشتيباني درايورها داراي مشکلات مختصري بود. در آن زمان برخي کارت هاي گرافيکي جديد پشتيباني نمي کردند به ويژه در مورد کتابخانه ها، کار کردن با اين واسط نيازمند درايورهاي اختصاصي ويژه اي بود.
در هر حال براي آن دسته از سازندگان بازي هاي رايانه اي به ويژه بازي هاي مختص به وسايل سيار که تمايل دارند بازي هاي توليدي شان بر روي تمامي پلتفرم ها اجرا شود، ماهيت چند سکويي بودن openGL مزيت آشکاري است که مي تواند آنها را به مقصودشان برساند. کريس ديلي از شرکت Introversion اظهار داشت که تمامي بازي هاي محصول اين شرکت قابليت اجرا بر روي پلتفرم هاي Mac، لينوکس، و ويندوز را دارا هستند و اخيراً در تلاش هستيم که امکان اجراي اين بازي ها را با استفاده از واسط openGL بر روي آيپد و آيفون فراهم کنيم، بنابراين مي توانم بگويم که محصولات ما قابليت اجرا بر روي تمامي پلتفرم هاي جديد را دارا هستند و در واقع تمامي کنسول ها به غير از Xbox از openGL پشتيباني مي کنند. بنابراين فکر مي کنم که اين واسط آينده روشني خواهد داشت.
اينکه بازي هاي توليدي اين شرکت با جديدترين کارت هاي گرافيکي ويژه PC دچار مشکل نمي شوند و با بسياري از پلتفرم هاي موجود در بازار سازگاري دارند خبر بسيار خوبي است. با اين حال ماهيت چندسکويي بودن اين واسط در نظر سازندگان مطرح بازي هاي رايانه اي چندان هم اهميت ندارد.
کارمک در ادامه صحبت هاي خود افزود درست است که اين واسط ويژگي پورتابل بودن را براي پلتفرم هايي چون Mac و لينوکس به ارمغان آورده است با اين حال directX9 امکان پورتابل بودن از ميان PC ,Xbox ميسر کرده است که امري است بسيار مهم. وي در ادامه به ساخت نسخه هاي همراه برخي بازي هاي توليدي شرکت id از جمله Rage براي آيفون آن هم بدون استفاده از قابليت چند سکويي openGL اشاره کرد. به عقيده وي در ساخت بازي هاي سيار به واسط openGL ES که براي سيستم هاي توکار ساخته شده است نياز است اما تنها کاري که انجام مي شود اشتراک گذاري کد ميان ابزار سيار و کنسول است.
واسط openGL بر روي پلتفرم هاي گوناگوني اجرا مي شود با اين حال هرگاه سخن از پشتيباني شيدر باينري (صفر ويک) به ميان مي آيد، امکاناتي که واسط ارائه مي دهد هم بر حسب نوع پلتفرم تغيير مي کند. در مقابل Glueck با پذيرفتن اين مسأله که DirectX تنها بر روي پلتفرم هاي ساخت شرکت مايکروسافت قابل اجرا است معتقد است که اين واسط دست کم بر روي نسخه هاي مختلف ويندوز داراي امکاناتي يکسان است و به همين دليل عملکرد بدون نقصي را از خود بر روي PCهاي مختلف مجهز به سيستم عامل ويندوز به اجرا مي گذارد. باينري هاي شيدر d3Dبر روي تمامي پلتفرم هاي ويندوز کار مي کنند و بنابراين سروري در اختيار خواهيم داشت که هر نوع ترکيب شيدر را بر اساس امکانات مورد نظر برنامه نويس و ظرف مدت زماني کوتاه توليد مي کند. اما در مورد openGL اينگونه نيست و شدر باينري در هيچيک از پلتفرم ها پشتيباني نمي شود و علاوه بر اين تضميني مبني بر سازگاري اين واسط با ابزارهاي توليدي در آينده وجود ندارد، حتي اگر اين ابزارها ساخت همان تهيه کنندگان قبلي باشند سازندگان بازي مجبور خواهند بود که تا زمان توليد تمامي آن شيدرها بر روي ماشين هاي مورد نظر صبر کنند. متأسفانه به نظر نمي رسد که حتي پشتيباني شيدر باينري در openGL هم چند سکويي باشد.
زماني که يک سازنده بازي رايانه اي تمامي پايگاه داده اي خود و همچنين کار توليد بازي را بر اساس openGL ترتيب مي دهد. عقلاني به نظر نمي رسد که تنها براي دستيابي به برخي امکانات جديد واسط برنامه نويسي (API) خود را به ديگري تغيير دهد به ويژه اگر اين سازنده شرکت بزرگي چون id باشد که نوع واسط برنامه نويسي آن تأثيري در فروش بالاي محصولاتش نخواهد داشت خواه اين واسط openGL باشد و خواه D3D. ديلي همچنين تمايلش در استفاده از openGL را نوعي سليقه شخصي قلمداد مي کند و انتخاب يکي از اين دو واسط را به انتخاب دوربين Conon يا Nikon از سوي عکاسان تشبيه مي کند و در ادامه توضيح مي دهد که يک عکاس پس از انتخاب يکي از اين انتخاب براي خود پاي برجا مي ماند و در مورد واسط برنامه نويسي گرافيکي هم همينگونه است.
ديلي نيز برنامه نويسي بازي هاي سه بعدي را در اواخر دهه 1990 ميلادي با واسط openGL آغاز کرد وي معتقد است که اين واسط در دوران خود مطرح ترين واسط برنامه نويسي بود و در عوض D3D حرفي براي گفتن نداشت و براي همين openGL انتخاب عقلاني به شمار مي رفت. من نيز کار خود را با آن ادامه دادم و امروز طرز کار با آن را به خوبي مي دانم و تا اين حد با D3D آشنايي ندارم. بارها شده که تصميم گرفتم با D3D کار کنم اما پس از اندک زماني دريافتم که اين واسط به درد من نمي خورد و بهتر آن است که کار خود را با همان واسط قبلي ادامه دهم.
شرکت Introversion در حال حاضر از هيچيک از ضميمه هاي شيدر پيشرفته در بازي هاي ساخت خود استفاده نمي کند و تمرکز اصلي آن بر روي API اصلي است که همانگونه ديلي نيز توصيف مي کند کار با آن بسيار لذت بخش است. بر اساس گفته هاي اين متخصص برنامه نويسي بخشي از اين جذابيت به دليل توانايي اين واسط در اجراي کدهاي بسيار ساده با کمترين زحمت است.
در openGL درست مانند D3D مي تواند با سرعت عمل مناسب، فريم هاي استاندارد و پشتيباني سخت افزاري يک گرافيک عالي ايجاد کرد. اما تفاوت کليدي اين دو در آن است که واسط openGL اين امکان را به شما مي دهد که برنامه بازي را با جزئيات کمتر اما با سرعت اجراي بيشتر بنويسيد، در واقع نوعي روش نمونه سازي يا پروتوتايپ کردن.
در اين روش برنامه نويس مي تواند با استفاده از openGL و نوشتن کدهاي بسيار ساده اشکال را به سرعت ويرايش يا اصطلاحاً render کند. جزئيات در آن رعايت نمي شوند اما در مواقعي که تمايل دارند سريع اجرا شود بسيار سودمند خواهد بود و ديگر لازم نيستد که نگران سرعت پايين فريم هاي آن باشيد. اين در حالي است که D3D به هيچ وجه اجازه انجام چنين کاري را به برنامه نويس نمي دهد و در اين واسط تأکيد بر دقت عمل است.
با اين حال امروز که D3D از نظر افزودن ويژگي هاي جديد به تصاوير سه بعدي و پشتيباني خوب از درايور درصدر واسط هاي برنامه نويسي قرار دارد به غير از آشنايي داشتن و برخورداري از قابليت چندسکويي دلايل ديگري براي استفاده از openGL وجود ندارد. اين امر به ويژه در مورد بازي هايي که نياز به امکانات سخت افزاري پيشرفته اي ندارند مصداق پيدا مي کند. با استفاده از openGL امکان اجراي آسان يک بازي آيپد بر روي دسکتاپ يک PC ميسر مي شود به ويژه آنکه نيازي به استفاده از شيدر باينري هاي پيچيده هم ندارد.
واسط openGL بيشتر دنباله رو مسيري است که D3D پيموده است و از خود ابتکار عملي ندارد با اين حال به عنوان واسط برنامه نويسي دوم در اين صنعت وجود دارد همچنان رقيب سرسختي براي D3D است و رقابت را در اين عرصه داغ تر کرده است و همين خبر خوبي است. شايد openGL سهم زيادي از بازار بازي هاي سه بعدي را به خود اختصاص نداده باشد اما اينکه همچنان ميدان را خالي نکرده و قدم به قدم رقيب خود را دنبال مي کند شرکت مايکروسافت را بر آن داشته است که ساکت ننشيند و هر روز ابتکار تازه اي به خرج دهد.
اين مسأله مانند 10 يا 15 سال پيش ديگر تضاد ميان ايدئولوژي ها نيست بلکه رقابت در هر بازار اتفاقي است خوشايند. چنانچه حمايت خود را از openGL قطع مي کرديم و اعلام مي داشتيم که ديگر درايور جديدي توليد نخواهيم کرد اينگونه به نظر مي رسيد که گويي تصميم مايکروسافت برخواسته ما فائق آمده است و چاره اي جز قبول آن نداريم اما با ادامه اين رقابت حضور اين دو واسط در ميدان را تضمين کرده ايم و همين جاي بسي اميدواري دارد.
منبع: نشريه بزرگراه رايانه، شماره 141.
متخصصاني چون John Cleese با چنين ادعايي مخالف اند و بر اين باورند که اين کتابخانه گرافيکي کدباز همچنان در ميان دست اندرکاران برنامه نويسي سه بعدي محبوبيت دارد و openGL مخصوص سيستم هاي توکار اين حقيقت را به اثبات رسانده است و نشان داده که همچنان در ميان سازندگان بازي هاي موبايل طرفدار دارد. شکي نيست که از محبوبيت اين واسط سه بعدي در ميان برنامه نويسان کاسته شده است با اين حال به منظور جلوگيري از هرگونه پيش داوري و قضاوت نادرست بگذاريد اندکي موضوع را بشکافيم. اگر بازي هاي مبتني بر موتورهاي id Tech بازي آنلاين دنياي جنگ افزار (world of Warcraft) و بازي هاي نه چندان مشهوري چون Minecraft که هر چند وقت يکبار از سوي شرکت هاي کوچک وارد بازار مي شوند را کنار بگذاريم درخواهيم يافت که امروزه اغلب بازي هاي رايانه اي با استفاده از واسط برنامه نويسي سه بعدي مايکروسافت موسوم به Microsiftُs Direct3D API ساخته مي شوند.
امروزه بازاريابي و فروش معماري هاي نوين GPuها يا (واحدهاي پردازش گرافيکي) بر اساس نوع نسخه واسط DirectX که از نظر سخت افزاري پشتيباني مي شود صورت مي گيرد و چنانچه اين بازي از جديدترين نسخه DirectX پشتيباني کند بازي فروش بيشتري خواهد داشت.
در مبحث بازي هاي رايانه اي چنانچه در مقام مقايسه ميان اين دو وسط برنامه نويسي برآييم Direct3d به مسافري مي ماند که در ليموزين خود لم داده و openGL به موتور سواري که در تکاپوي رسيدن به آن است. 12 سال قبل اين API در مقايسه با openGL و Glide ساخت شرکت3dfx interactive حرفي براي گفتن نداشت و امروز صدرنشين است. حال علت روي گرداني سازندگان بازي هاي رايانه اي از openGL چيست؟
دوران اوج openGL
در آن زمان براحتي مي توانستيم حس رقابت ميان اين دو واسط برنامه نويسي سه بعدي را با تمام وجود حس کنيم. کافيست نگاهي به بازي علمي تخيلي نيمه جان يا Half-Life بياندازيد که کمپاني Valve Software آن را به بازار عرضه کرد. در اين بازي کاربر تنها مي تواند رزولوشن و تنظيمات گرافيکي را به دلخواه تغيير دهد بلکه اين امکان را دارد که حالت ويرايش يا rendering Mode را هم فعال نمايد. اين بازي هر دو واسط رقيب آن زمان و همچنين سيستم 3dfx mini-GL را پشتيباني مي کرد اما بايد اعتراف کرد که openGL عملکرد بسيار بهتري را از خود به نمايش مي گذاشت. البته بايد امکان تصوير سازي نرم افزاري يا software Rendering را هم به اين قابليت ها افزود که شايد اهميت آن از همه بيشتر باشد، در آن زمان خوره هاي بازي کارت هاي گرافيکي سه بعدي يا 3D Accelerators را از جمله امکانات لوکس يک بازي و عاملي براي برتري آن قلمداد مي کردند تا يک ويژگي استاندارد براي تمامي چيپ هاي گرافيکي بنابراين سازندگان بازي هاي رايانه اي بايد از آن پس قابليت پشتيباني نرم افزاري و سخت افزاري تصويرهاي گرافيکي سه بعدي را نيز به بازي هاي خود مي افزودند. اين امر در اواخر دهه 1990 ميلادي براي تمامي کتابخانه هاي گرافيکي سه بعدي محقق شد اما پشتيباني از تصويرسازي نرم افزاري يا همان software rendering به وجه تمايز ميان openGL و Direct3D تبديل شد. در اصل openGL تصوير سازي نرم افزاري را پشتيباني مي کرد اماDirect3D تا يک دهه قبل از آن چنين قابليتي نداشت.
بنابر اظهارات Richard Huddy مدير روابط عمومي شرکت AMD در توضيح پيرامون واحدهاي پردازش گرافيکي يکي از برترين قابليت هاي DirectX آن است که امکان افت عملکرد GPU و جايگزيني آن با واحد CPU که اصطلاحاً به آن نرم افزار جايگزين يا Software Fallback گفته مي شود را به صفر مي رساند (بهتر آن است که در هنگام ويرايش تصاوير يا رندرينگ بگذاريد که CPU اين کار را انجام دهد و در صورتي که اين واحد از انجام کار عاجز ماند ادامه فرايند توسط واحد جايگزين CPU انجام خواهد شد.) متخصصين بازي هاي رايانه اي به خوبي امر آگاهند که يک پيکسل مطابق با شرايط و ويژگي ها RENDER مي شود و جزئيات بدان افزوده مي شوند که به اين منظور مي توان از Software Fallback کمک گرفت. اما بايد آگاه بود که اين روش در ساخت بازي هاي رايانه اي پاسخگو نخواهد بود. به خاطر مي آورم که در زمان رونق واسط هاي Direct3D و5 اغلب افراد از من سؤال مي کردند که اگر نرم افزار قادر به انجام فلان کار نباشد مي توانيم از نرم افزار جايگزين کمک بگيريم؟ و من صراحتاً پاسخ مي دادم خير و در مورد محصول مايکروسافت که همان DirectX باشد هم پاسخ با قاطعيت خير خواهد بود.
با توجه به سازگاري با سيستمهاي قديمي و قابليت انطباق فناوري هاي امروزي با ورودي هاي قديمي به نظر مي رسد که اين روند همچنان ادامه داشته باشد. واسط openGL نيز بايد چنين قابليتي را دريافت کند و اين اطمينان را به متخصصان بازي هاي سه بعدي بدهد که امکان پشتيباني از برنامه ها و کدهاي نوشته شده جديد را داراست. با وجود آنکه چندي پيش شرکت khronos Group اعلام کرد که بخش اعظمي از کدهاي زبان اصلي اين واسط را حذف کرده اند و برخي سازندگان بازي هاي رايانه اي همچنان بر اين باورند که اين امر کافي نبوده و اين واسط همچنان داراي ايراداتي است.
مدير تحقيق و توسعه فني شرکت Crytek بر اين معتقد است که DirectX اهميتي به مقوله سازگاري با سيستمهاي قديمي ميان نسخه هاي عمده اين واسط نمي دهد. براي مثال Direct3D 9 و10 تفاوت قابل ملاحظه اي با يکديگر دارند و با وجود آنکه در وهله اول اين اختلاف فاحش ممکن است براي سازندگان بازي هاي رايانه اي آزار دهنده باشد با اين حال api را تميزتر و پايدارتر کرده و اين امکان را به آنها مي دهد که اشتباهات طراحي کارهاي قبلي خود را ويرايش نمايند. سازگاري سپس اهميت فراواني براي صنايع سه بعدي مجزا از بازي هاي رايانه اي دارد و تا به حال اين حجم تغيير و حذف کد در openGL صورت نگرفته بود. بي شک openGL3 نسبت به نسخه هاي اوليه پيشرفت هايي داشته است اما عليرغم حذف برخي امکانات قديمي از پروفايل اصلي اين واسط همچنان سبک اين API به همان شکل قديمي است.
در اواخر دهه 1990 ميلادي، بازي هاي سه بعدي بيشتر بر روي Glide API يا openGL اجرا مي شد تا DirectX پس از آن id Software در صدرموتورهاي سه بعدي جاي گرفت و موتور موسوم به Quake engine را براي بازي تيراندازي Quake نوشت و براي اين منظور استاندارد openGL بهره گرفت. همانگونه که کارمک اشاره مي کند تا مدتها openGL به ويژه از لحاظ عملکرد از Direct3D پيش بود.
اگر چنين بوده باشد عقلاني تر است که سازندگان بازي هاي بسيار پيشرفته رايانه اي در آن زمان openGL استفاده کنند و نه رقيب آن. با اين حال اگر امروز نگاهي به ويژگي هاي اين واسط برنامه نويسي بياندازيم درمي يابيم که اين واسط از نظر برخورداري از امکانات سخت افزاري سه بعدي تنها اندکي با رقيب خود فاصله دارد و به تدريج در حال رسيدن به آن است.
مايکل هودي مدير تحقيق و توسعه فني شرکت Crytek همچنين بر اين باور است که طي ده سال اخير اين شرکت مايکروسافت بوده است که در عرصه گرافيک ابتکار عمل را به دست گرفته است و openGL به جاي آنکه خود ابتکار عمل را در دست بگيرد و متدهاي جديد ابداع کند بيشتر دنباله رو مايکروسافت بوده است. براي مثال اين مايکروسافت بود که براي نخستين بار ابزار سايه زني اشکال هندسي را به همراه Vista , DirectX ابداع و عرضه کرد که بعدها تمامي امکانات شگفت انگيز خود را در openGL به نمايش گذاشت. وي همچنين خاطرنشان کرد که ساخت امکاناتي نظير سايه زني اشکال هندسي يا همان geometry shading نه تنها مديون ابتکار شرکت مايکروسافت بلکه حاصل زحماتي است که سازندگان بازي هاي رايانه اي و واحدهاي پردازش گرافيکي (GPU) عضو هيئت مشاوران گرافيک، در جلسات اين شرکت متحمل مي شدند.
بنابراين شايد در نگاه نخست اينگونه به نظر بيايد که امکانات openGL با DirectX در يک سطح قرار داشته و با يکديگر برابري مي کند اما بخش اعظمي از اين قابليت ها در آينده محقق خواهد شد و در حال حاضر اين دو در يک سطح قرار ندارند. براي مثال در ابتدا گفته شد که نسخه openGL 3.2 از ابزار سايه زني اشکال هندسي پشتيباني مي کنند اما اينگونه نبود و اين امر تا آگوست سال 2009 ميلادي محقق نشد يعني در حدود يک سال و نيم پس از انتشار DirectX10 به همراه ويندوز ويستا. معرفي اين امکانات به همان سادگي که در ذهن شما نقش مي بندد نيست. پشتيباني از شيدر يا ابزارهاي سايه زني جديد جز لاينفک واسط DirectX محسوب مي شود با اين حال امکان بکارگيري فناوري هاي نويني از اين دست تنها از طريق سيستم هاي ضميمه اي امکان پذير خواهد بود.
کريس ديلي طراح و سازنده ارشد بازي هاي رايانه اي شرکت Introversion در توضيح اين مطلب اظهار مي دارد که اين سيستم ضميمه اي در حدود 15 سال پيش نوشته شد يعني مدت ها پيش از آنکه شيدر اختراع شود. اين سيستم در ابتدا براي ضميمه هاي غيرمنتظره و ناگهاني به پلتفرم که در هر لحظه احتمال انجام آن مي رود طراحي شد اين در حالي است که اگر امروز موتور گرافيکي خود را در openGL بنويسيد موتور گرافيکي تعريف شده به طور کلي از طريق همان سيستم ضميمه اجرا خواهد شد. اين مسأله آنچنان هم پيچيده نبوده بلکه بسيار ساده است اما در بازي هاي مشخصي چون Darwinia که سبک هاي گرافيکي مختص به خود را دارند به هيچ وجه از شيدر استفاده نمي شود. در حقيقت اين بازي ابتدا به زبان openGL نوشته شد و بعدها به زبان DirectX منتقل شد. با اين حال سيستم هاي ضميمه اي مي توانند براي سازندگان بازي هاي پيشرفته رايانه اي آزاردهنده باشند. و اين امر تنها بدان دليل نيست که اين سيستمها روشي قديمي براي استفاده از شيدرها در APIها هستند.
هودي در ادامه صحبت هاي خود اشاره مي کند که هيچگونه رقابتي ميان ضميمه ها وجود ندارد و يکي از وحشتناک ترين مسائل در مورد openGL آن است که ضميمه ها هم نقطه اين واسط محسوب مي شوند و هم بخشي از مشکلات آن. گاهي اوقات توانايي يک قطعه سخت افزاري از openGL بيشتر است و مجبور خواهد شد که براي رفع اين کاستي از ضميمه (extension) استفاده کنيد و اين امر بسيار عادي است. اما مشکل آنجاست که ضميمه ها به تاييد مرجع خاصي نرسيده اند و تنها به طور شخصي مورد استفاده قرار مي گيرند بنابراين انتخاب ضميمه مناسب براي يک فروشنده مستقل نرم افزار يا همان ISV بسيار دشوار خواهد بود. حال اين پرسش مطرح مي شود که يک سازنده بازي رايانه اي کدام ضميمه را بايد انتخاب کرد تا با کارآمدي کامل تنظيمات ضميمه Vertex buffer يا ايجاد سطور را نيز انجام دهد. Nvidia يا AMD؟ رسيدن به پاسخي روشن براي اين پرسش امري است دشوار.
ابزار Vertex buffer به طور کامل در واسط openGL گنجانده شده است اما نکته مهم آن است که در وهله اول بايد امکانات نسبتاً جديدي مانند Tessellation (به معناي پر کردن يک سطح با اشکال هندسي) از طريق ضميمه ها بدان افزوده شوند و اين کار را براي تهيه کنندگان نرم افزار دشوار مي کنند به ويژه اگر پاي چندين ضميمه از افراد مختلف که احتمالاً به طريق گوناگون و در حوزه هاي مختلف فعال هستند در ميان باشد. ضميمه ها از برخي لحاظ مزيت براي openGL محسوب مي شوند. با اين حال در عين آنکه انعطاف پذيري را به واسط برنامه نويسي مي بخشند، به سازندگان بازي هاي رايانه اي اين امکان را مي دهد که چگونگي مديريت جنبه هاي مشخصي از Pipeline سه بعدي را خود انتخاب نمايند. کارمک با توجه به پيشرفت هاي حاصله در جديدترين موتور سه بعدي id که مبناي بازي جديد اين شرکت موسوم به Rage يا خشم را تشکيل خواهد داد اعلام کرد که همچنان اميدواريم که در آينده شاهد عرضه ضميمه هاي پيشرفته تري از VBL (قسمت هاي خالي عمودي) که همسان سازي را بهتر انجام مي دهند و احتمالاً تعدادي ضميمه براي دسترسي مستقيم به بافت يا Texture را به همراه دارند، باشيم.
با اين حال حتي اين مزيت واسط openGL نيز در حال کمرنگ تر شدن است چرا که بسياري از کارت هاي گرافيکي موجود در بازار داراي پشتيباني سخت افزاري مشابه به آن هستند، شايد معماري واحدهاي پردازش گرافيکي (GPU) در AMD , Nvidia با يکديگر متفاوت باشد با اين حال اين دو از نظر بنيادين از امکانات مشابهي پشتيباني مي کنند. براي نمونه هر دوي اين محصولات بايد قابليت پشتيباني از DirectX را داشته باشند و اين يکي از نقاط مشترکشان است. وي همچنين در ادامه صحبت هاي خود مي افزايد امروزه به دليل پوشش کامل فروشندگان و عرضه کنندگان بر تمامي محصولات گرافيکي، توانايي ساخت ضميمه اهميت و ارزش سابق را ندارد. در حقيقت شايد اينگونه به نظر برسد که openGL در مقايسه با رقيب خود در بسياري حوزه هاي ديگر نيز داراي کاستي هايي است.
مايکل گلاک پشتيباني اين واسط از (Multi-threading) و ثبات آن را از جمله نقاط ضعف openGL عنوان کرده و اظهار داشت که اين واسط عليرغم آنکه اخيراً دستخوش تحولات شگرفي شده و تغييرات عديده اي را به خود ديده است همچنان از Direct3D عقب است و از نظر امکانات کاملاً در يک سطح با آن قرار ندارد. کارمک نيز با تأييد گفته هاي گلاک، اضافه مي کند که واسط Direct3D عمل Multi-threading را بهتر انجام مي دهد و نسخه هاي جديدتر آن شرايط را بهتر مديريت مي کنند.
دسترسي به رايانش GPGPU (محاسبه چند منظوره بر واحدهاي پردازش گرافيکي)
هودي بر اين باور است که بخش Direct Computer موجود در نسخه 11 واسط DirectX بهترين بخش آن محسوب مي شود. در مرحله پسا پردازش لايه پيوند داده شده، منطقي ترين راه براي ويرايش پيکسل ها و تبديل يک فرمت به فرمت ديگر، با افزودن افکت هاي مختلف نظير عمق بخشيدن به زمينه با محو کردن تصاوير استفاده از شيدر به هم پيچيده نيست چنانچه بخواهيد از شيدر استفاده کنيد بايد تمامي پيکسل هاي مجاور به يکديگر را برداشته از شيدر استفاده کنيد بايد تمامي پيکسل هاي مجاور به يکديگر را برداشته و تک تک آنها را پردازش کرده و آنها را به رنگ نهايي درآوريد که کاري است بس دشوار. اگر Computer Shader براي انجام اين کار استفاده کنيد نتيجه طبيعي تر خواهد بود. براي اين منظور نيازي به Z-buffer براي حجم بخشيدن به تصاوير نخواهيد داشت با اين حال اگر Computs Shader خود را به درستي نوشته باشيد مي توانيد چنين کاري را انجام دهيد.
هودي در ادامه صحبت هاي خود اظهار مي دارد که عمل پساپردازش GPGPU در openGL اندکي دشوارتر است با اين حال باز هم بايد يادآور شويم که پساپردازش قابليتي استاندارد که در واسط برنامه نويسي گنجانده شده باشد نيست. وي بر اين باور است که علت گرايش سازندگان بازي به openGL آن است که اين واسط از قابليت Direct Computs واحدهاي پردازش گرافيکي برخوردار بوده و کار با آن هم اندکي ساده تر است. اما اگر يک حساب سرانگشتي انجام دهيد علت اقبال اندک سازندگان مطرح کارمک نيز که براي سال هاي طولاني به openGL وفادار مانده است اذعان کرد که امروز واسط برنامه نويسي برتر همان D3D است. درحالي که شرکت مايکروسافت همچنان مصمم به اعمال تغييرات اساسي در DirectX براي بهبود عملکرد آن است، openGL همچنان از نظر سازگاري داراي مشکلات عديده اي است.
علي رغم برتري آشکار DirectX در ساخت بازي هاي رايانه اي، کارمک همچنان در ساخت اين بازي ها از openGL بهره مي گيرد و اين در حالي است که ساير سازندگان مطرح بازي هاي رايانه اي اين واسط برنامه نويسي متن باز را براي هميشه کنار گذاشته اند. از جمله اين سازندگان مطرح مي توان به شرکتcrytek اشاره کرد. بازي farCryکه از جمله محصولات مهم اين شرکت به شمار مي رود و با استفاده از واسط openGL نوشته شده است در حالي که بازي Crysis تنها بر روي Direct 3Dاجرا مي شد. در واقع دليلي براي آنکه اين دو زبان برنامه نويسي مجزا را پشتيباني کند وجود ندارد و شرايط اقتضا مي کرد که با استفاده از پيشرفته ترين واسط برنامه نويسي تهيه شود. در حقيقت openGL سال ها پيش از گردونه رقابت خارج شد و امکانات آن ديگر با رقيب خود برابري نمي کرد و تنها مدت زمان اندکي است که به تکاپو افتاده و در تلاش است تا خود را به رقيب ديرينه اش برساند.
فاکتور DirectX
هودي بهره برداري از يک نسخه جديد واسط DirectX را به بهره برداري از يک کنسول جديد تشبيه مي کند. به عقيده وي مشتريان سازندگان نرم افزار و توليد کنندگان سخت افزار از قابليت هاي بالقوه اين فناوري به وجد خواهد آمد. بهره برداري از يک نسخه جديد اين واسط معمولاً بر اساس يک جدول زمان بندي شده صورت مي گيرد که گاه نيز با بهره برداري از يک سيستم عامل جديد مصادف مي شود.
او در ادامه مي گويد ارائه محصولات شرکت مايکروسافت دقيقاً بر اساس زمانبدي هاي انجام شده آن صورت مي گيرد و معمولاً با معرفي يک سيستم عامل با نسخه به روز رساني شده DirectX مصادف مي شود و به اين ترتيب توليدکنندگان قطعات سخت افزاري و شرکاي اين شرکت مي توانند محصولات جديد خود را به صورت هدفمند به بازار ارائه کنند. اکنون در نظر داريم سيستم عامل جديد خود را که قرار است به همراه برخي قطعات سخت افزاري به بخش هاي مختلف دنيا ارسال شود را دو يا سه ماه زودتر آماده کنيم و در اين فاصله هماهنگي هاي لازم را با شرکت هاي تهيه کننده بازي هاي رايانه انجام دهيم تا مطمئن شويم که در موعد مقرر و همزمان با بهره برداري از اين سيستم عامل بازي آنها آماده خواهد بود. تمامي اين مذاکرات در جلسه سالانه اي که قرار است در آفريقا برپا شود يا در يک برنامه زماني شش ماهه صورت خواهد گرفت. قرار است که اين جلسه با حضور سازندگان نرم افزار، توليدکنندگان سخت افزار، و نمايندگان شرکت مايکروسافت و به منظور بحث و بررسي مشخصات و امکانات نسخه آينده DirectX برگزار شود. بر اساس گفته هاي اين مقام مسئول علت اصلي برپايي اين جلسات ساليانه ساخت يک نسخه جديد اين واسط به طور سالانه اين جلسات ساليانه ساخت يک نسخه جديد اين واسط به طور سالانه بود اما اين هدف محقق نشد و تقريباً هر سه سال يکبار شاهد ورود نسخه جديد اين واسط به بازار هستيم.
بنابراين همه شرکت ها مي توانند با اطمينان خاطر مطمئن باشند که هر سه سال يکبار نسخه جديد اين محصول به بازار عرضه مي شود و در نتيجه مي توانند ساخت محصولات جديد خود و بازاريابي آنها را به گونه اي تنظيم نمايند که مصادف با بهره برداري واسط جديد DirectX باشد. اينکه بتوان زمان ارائه نسخه جديد اين محصول به بازار را پيش بيني کرد مي تواند کمک شايان ذکري به شرکت هاي تهيه کننده نرم افزار کند. فرض کنيد شرکتي در نظر دارد يک قطعه جديد سخت افزاري را طراحي کند و زمان ورود نسخه جديد اين واسط از قبل مشخص است و شرکت هاي سازنده بازي هاي رايانه اي نيز ارائه بازي جديد خود را با ورود اين واسط جديد هماهنگ رايانه اي نيز ارائه بازي آن شرکت مفروض هم به طور مستمر عرضه نمي شوند و تنها در زمان هاي مشخصي که خريدار دارند مثلاً تعطيلي مدارس توليد مي شوند. مي توانيد تصور کنيد که اين بازي چقدر فروش خواهد داشت؟
اين امر تنها بر توليد کنندگان GPU و سازندگان بازي هاي رايانه اي اثر نمي گذارد. مصادف شدن بهره برداري از نسخه جديد واسط DirectX شرکت مايکروسافت با ورود يک سيستم عامل جديد به بازار با تبليغات مادربورد و قطعات کامپيوتري ديگر همراه شد و شرکت هاي توليد کننده اين قطعات در تبليغات خود مدعي شدند که محصولاتشان پشتيباني لازم را از جديدترين امکانات اين سيستم عامل جديد خواهد کرد.
ايراد عمده استراتژي فروش مصادف شدن آن با بهره برداري از ويندوز ويستا بود. نصب کارت هاي گرافيکي چندگانه در درايور جديد اين ويندوز مشکلات فراواني را براي کاربران به وجود آورد و علاوه بر آن نسخه 10 واسط DirectX10 از دو ويرايشگر (renderer) استفاده کنند به وجود آورد و از سوي ديگر نسخه پرطرفدارتر DirectX9 هم تنها با سيستم عامل ويندوز XP سازگار بود.
عرضه ويندوز ويستا با هدف پشتيباني از DirectX مشکل بسيار بزرگي بود چرا که ويستا به سختي خود را يا اين واسط انطباق مي داد و مهم تر از آن شرکت مايکروسافت نسخه جديد DirectX را براي يک سيستم عامل جدي نشان کرده بود. اين مسأله نيز مشکل ساز مي شد چرا که ارائه آمار دقيقي از تعداد ماشين هاي مجهز به DirectX عملاً غير ممکن بود. با اين حال تيم طراح DirectX اشتباه خود را به روشني دريافتند و آن را برطرف نمودند. نسخه 11 اين واسط موسوم به DirectX11 هم بر روي ويندوز 7 و هم ويستا اجرا مي شد و بازي هاي فراواني را با خود به همراه داشت. در واقع هر دو بازي Battleforge ,Call of Pripyat پيش از ورود ويندوز 7 به بازار از واسط DirectX11 پشتيباني مي کردند.
خلاصه کلام آنکه براي نسخه جديد DirectX با استقبال کافي روبرو شود و سوددهي مناسبي داشته باشد بايد به دقت و هماهنگي انجام شود تا از اين طريق شرکت هاي سخت افزاري و نرم افزاري درگير نيز بتوانند محصولات خود را به فروش برسانند. حال بهره برداري از يک نسخه جديد DirectX را با نسخه جديد openGL که به تازگي زمزمه هايي در مورد ساخت آن از سوي شرکت سازنده اش به گوش مي رسد مقايسه کنيد. آنظور که گفته مي شود اين واسط قابليت پشتيباني از امکانات DirectX را هم داراست. مسلماً اينکه يک PC بازي جديد صرفاً به اين علت که از openGL 4 پشتيباني مي کنند دليل بر استقبال مخاطبان از آن نخواهد بود بلکه پشتيباني آن محصول از DirectX11 است که مي تواند به ويژه در زمان معرفي آن محصول مشتريان را به خود جلب کند.
به گفته Michael Glueck شمار بالاي بازي هاي رايانه اي توليد شده با استفاده از واسط Direct3D نشانگر اقبال فراوان دست اندرکاران صنعت ساخت بازي از اين محصول است چرا که اين واسط داراي ابزارهاي سودمندتري بوده و در کل کيفيت درايور گرافيک آن هم بيشتر است. واسط openGL نيز از قافله تغيير عقب نمانده و چندي است که در تلاش براي رسيدن به اين واسط است اما با سرعتي نسبتاً پايين تر.
کيفيت درايورهاي يک واسط موضوع بسيار مهمي است و openGL هم از اين لحاظ وضعيت ثابتي نداشته است. حتي امروز نيز اين اطمينان وجود ندارد که امکانات DirectX11 کاملاً با درايورهاي openGL همخواني داشته باشد و براي مثال مشخص نيست که آيا درايورهاي اين واسط قابليت انجام رفتار سطح سازي (Tessellation) را دارند يا خير.
کريس ديلي معتقد است که با وجود تمام اين مسائل پشتيباني درايور اين واسط نسبت به گذشته بهتر شده است. تقريباً زماني که DirectX نسخه5 يا 6 خود را منتشر کرد استقبال شديدي از اين واسط از سوي بسياري از سازندگان بازي هاي رايانه اي صورت گرفت چرا که در آن زمان openGL از نظر پشتيباني درايورها داراي مشکلات مختصري بود. در آن زمان برخي کارت هاي گرافيکي جديد پشتيباني نمي کردند به ويژه در مورد کتابخانه ها، کار کردن با اين واسط نيازمند درايورهاي اختصاصي ويژه اي بود.
بنابراين چرا بايد از openGL استفاده کرد؟
در هر حال براي آن دسته از سازندگان بازي هاي رايانه اي به ويژه بازي هاي مختص به وسايل سيار که تمايل دارند بازي هاي توليدي شان بر روي تمامي پلتفرم ها اجرا شود، ماهيت چند سکويي بودن openGL مزيت آشکاري است که مي تواند آنها را به مقصودشان برساند. کريس ديلي از شرکت Introversion اظهار داشت که تمامي بازي هاي محصول اين شرکت قابليت اجرا بر روي پلتفرم هاي Mac، لينوکس، و ويندوز را دارا هستند و اخيراً در تلاش هستيم که امکان اجراي اين بازي ها را با استفاده از واسط openGL بر روي آيپد و آيفون فراهم کنيم، بنابراين مي توانم بگويم که محصولات ما قابليت اجرا بر روي تمامي پلتفرم هاي جديد را دارا هستند و در واقع تمامي کنسول ها به غير از Xbox از openGL پشتيباني مي کنند. بنابراين فکر مي کنم که اين واسط آينده روشني خواهد داشت.
اينکه بازي هاي توليدي اين شرکت با جديدترين کارت هاي گرافيکي ويژه PC دچار مشکل نمي شوند و با بسياري از پلتفرم هاي موجود در بازار سازگاري دارند خبر بسيار خوبي است. با اين حال ماهيت چندسکويي بودن اين واسط در نظر سازندگان مطرح بازي هاي رايانه اي چندان هم اهميت ندارد.
کارمک در ادامه صحبت هاي خود افزود درست است که اين واسط ويژگي پورتابل بودن را براي پلتفرم هايي چون Mac و لينوکس به ارمغان آورده است با اين حال directX9 امکان پورتابل بودن از ميان PC ,Xbox ميسر کرده است که امري است بسيار مهم. وي در ادامه به ساخت نسخه هاي همراه برخي بازي هاي توليدي شرکت id از جمله Rage براي آيفون آن هم بدون استفاده از قابليت چند سکويي openGL اشاره کرد. به عقيده وي در ساخت بازي هاي سيار به واسط openGL ES که براي سيستم هاي توکار ساخته شده است نياز است اما تنها کاري که انجام مي شود اشتراک گذاري کد ميان ابزار سيار و کنسول است.
واسط openGL بر روي پلتفرم هاي گوناگوني اجرا مي شود با اين حال هرگاه سخن از پشتيباني شيدر باينري (صفر ويک) به ميان مي آيد، امکاناتي که واسط ارائه مي دهد هم بر حسب نوع پلتفرم تغيير مي کند. در مقابل Glueck با پذيرفتن اين مسأله که DirectX تنها بر روي پلتفرم هاي ساخت شرکت مايکروسافت قابل اجرا است معتقد است که اين واسط دست کم بر روي نسخه هاي مختلف ويندوز داراي امکاناتي يکسان است و به همين دليل عملکرد بدون نقصي را از خود بر روي PCهاي مختلف مجهز به سيستم عامل ويندوز به اجرا مي گذارد. باينري هاي شيدر d3Dبر روي تمامي پلتفرم هاي ويندوز کار مي کنند و بنابراين سروري در اختيار خواهيم داشت که هر نوع ترکيب شيدر را بر اساس امکانات مورد نظر برنامه نويس و ظرف مدت زماني کوتاه توليد مي کند. اما در مورد openGL اينگونه نيست و شدر باينري در هيچيک از پلتفرم ها پشتيباني نمي شود و علاوه بر اين تضميني مبني بر سازگاري اين واسط با ابزارهاي توليدي در آينده وجود ندارد، حتي اگر اين ابزارها ساخت همان تهيه کنندگان قبلي باشند سازندگان بازي مجبور خواهند بود که تا زمان توليد تمامي آن شيدرها بر روي ماشين هاي مورد نظر صبر کنند. متأسفانه به نظر نمي رسد که حتي پشتيباني شيدر باينري در openGL هم چند سکويي باشد.
بنابراين برهان کارمک و شرکت id در وفاداري به اين واسط چيست؟
زماني که يک سازنده بازي رايانه اي تمامي پايگاه داده اي خود و همچنين کار توليد بازي را بر اساس openGL ترتيب مي دهد. عقلاني به نظر نمي رسد که تنها براي دستيابي به برخي امکانات جديد واسط برنامه نويسي (API) خود را به ديگري تغيير دهد به ويژه اگر اين سازنده شرکت بزرگي چون id باشد که نوع واسط برنامه نويسي آن تأثيري در فروش بالاي محصولاتش نخواهد داشت خواه اين واسط openGL باشد و خواه D3D. ديلي همچنين تمايلش در استفاده از openGL را نوعي سليقه شخصي قلمداد مي کند و انتخاب يکي از اين دو واسط را به انتخاب دوربين Conon يا Nikon از سوي عکاسان تشبيه مي کند و در ادامه توضيح مي دهد که يک عکاس پس از انتخاب يکي از اين انتخاب براي خود پاي برجا مي ماند و در مورد واسط برنامه نويسي گرافيکي هم همينگونه است.
ديلي نيز برنامه نويسي بازي هاي سه بعدي را در اواخر دهه 1990 ميلادي با واسط openGL آغاز کرد وي معتقد است که اين واسط در دوران خود مطرح ترين واسط برنامه نويسي بود و در عوض D3D حرفي براي گفتن نداشت و براي همين openGL انتخاب عقلاني به شمار مي رفت. من نيز کار خود را با آن ادامه دادم و امروز طرز کار با آن را به خوبي مي دانم و تا اين حد با D3D آشنايي ندارم. بارها شده که تصميم گرفتم با D3D کار کنم اما پس از اندک زماني دريافتم که اين واسط به درد من نمي خورد و بهتر آن است که کار خود را با همان واسط قبلي ادامه دهم.
شرکت Introversion در حال حاضر از هيچيک از ضميمه هاي شيدر پيشرفته در بازي هاي ساخت خود استفاده نمي کند و تمرکز اصلي آن بر روي API اصلي است که همانگونه ديلي نيز توصيف مي کند کار با آن بسيار لذت بخش است. بر اساس گفته هاي اين متخصص برنامه نويسي بخشي از اين جذابيت به دليل توانايي اين واسط در اجراي کدهاي بسيار ساده با کمترين زحمت است.
در openGL درست مانند D3D مي تواند با سرعت عمل مناسب، فريم هاي استاندارد و پشتيباني سخت افزاري يک گرافيک عالي ايجاد کرد. اما تفاوت کليدي اين دو در آن است که واسط openGL اين امکان را به شما مي دهد که برنامه بازي را با جزئيات کمتر اما با سرعت اجراي بيشتر بنويسيد، در واقع نوعي روش نمونه سازي يا پروتوتايپ کردن.
در اين روش برنامه نويس مي تواند با استفاده از openGL و نوشتن کدهاي بسيار ساده اشکال را به سرعت ويرايش يا اصطلاحاً render کند. جزئيات در آن رعايت نمي شوند اما در مواقعي که تمايل دارند سريع اجرا شود بسيار سودمند خواهد بود و ديگر لازم نيستد که نگران سرعت پايين فريم هاي آن باشيد. اين در حالي است که D3D به هيچ وجه اجازه انجام چنين کاري را به برنامه نويس نمي دهد و در اين واسط تأکيد بر دقت عمل است.
رقابت دلپذير است
با اين حال امروز که D3D از نظر افزودن ويژگي هاي جديد به تصاوير سه بعدي و پشتيباني خوب از درايور درصدر واسط هاي برنامه نويسي قرار دارد به غير از آشنايي داشتن و برخورداري از قابليت چندسکويي دلايل ديگري براي استفاده از openGL وجود ندارد. اين امر به ويژه در مورد بازي هايي که نياز به امکانات سخت افزاري پيشرفته اي ندارند مصداق پيدا مي کند. با استفاده از openGL امکان اجراي آسان يک بازي آيپد بر روي دسکتاپ يک PC ميسر مي شود به ويژه آنکه نيازي به استفاده از شيدر باينري هاي پيچيده هم ندارد.
واسط openGL بيشتر دنباله رو مسيري است که D3D پيموده است و از خود ابتکار عملي ندارد با اين حال به عنوان واسط برنامه نويسي دوم در اين صنعت وجود دارد همچنان رقيب سرسختي براي D3D است و رقابت را در اين عرصه داغ تر کرده است و همين خبر خوبي است. شايد openGL سهم زيادي از بازار بازي هاي سه بعدي را به خود اختصاص نداده باشد اما اينکه همچنان ميدان را خالي نکرده و قدم به قدم رقيب خود را دنبال مي کند شرکت مايکروسافت را بر آن داشته است که ساکت ننشيند و هر روز ابتکار تازه اي به خرج دهد.
اين مسأله مانند 10 يا 15 سال پيش ديگر تضاد ميان ايدئولوژي ها نيست بلکه رقابت در هر بازار اتفاقي است خوشايند. چنانچه حمايت خود را از openGL قطع مي کرديم و اعلام مي داشتيم که ديگر درايور جديدي توليد نخواهيم کرد اينگونه به نظر مي رسيد که گويي تصميم مايکروسافت برخواسته ما فائق آمده است و چاره اي جز قبول آن نداريم اما با ادامه اين رقابت حضور اين دو واسط در ميدان را تضمين کرده ايم و همين جاي بسي اميدواري دارد.
منبع: نشريه بزرگراه رايانه، شماره 141.