آشنایی با DirectX و OpenGL
یک بازی کامپیوتری را روی کامپیوترتان اجرا می*کنید. فعلا*ً کارت گرافیک شما روی اسلا*تAGP سوار می*شود، پردازشگر سلرون دارید و … پس از چند ماه یا چند سال کامپیوتر جدیدی می*خرید. اکنون اسلا*ت کارت گرافیکی شما PCI Express است و یک پردازشگر ۶۴ بیتی دارید. همان بازی را روی این کامپیوتر هم نصب و اجرامی*کنید! شاید به نظر طبیعی میآید که همه چیز باید همین*طور باشد. اما چگونه یک بازی روی کامپیوترهایی با تراشه*ها و سخت*افزارهای مختلف و گاه فناوری متفاوت اجرا می*شود؟ API*های گرافیکی یا همان رابط*های برنامه*نویسی، بخش بزرگی از این مشکل را حل می*کنند و امکانات گسترده دیگری را نیز در اختیار برنامه*نویسان و توسعه*دهندگان بازی و برنامه*های چندرسانه*ای قرارمی*دهند. OpenGL وDirectX، دو مجموعه API گرافیکی و صوتی هستند که برای آسان*تر ساختن توسعه بازی*ها و نرم*افزارهای چندرسانه*ای طراحی شده*اند.
API گرافیکی چیست؟
API درواقع بین برنامه و سخت*افزاری که برنامه روی آن اجرا می*شود، نقش یک هماهنگ*کننده را دارد و مانند پلی میان سخت*افزار و نرم*افزار ارتباط ایجاد*می*کند. یعنی برنامه*نویس کدهایی می*نویسد که داده*های گرافیکی خود را به وسیله دستورهای استانداردی به درایور API می*فرستد نه مستقیماً به خود سخت*افزار. سپس درایوری که شرکت سازنده سخت*افزار تولید*کرده است، این کداستاندارد تولیدشده را به فرمت بومی و ویژه*ای که برای آن مدل خاص سخت*افزار قابل شناسایی است، ترجمه می*کند.
Microsoft DirectX
شرکت مایکروسافت در سال ۱۹۹۵ DirectX را ساخته و توسعه داده*است. این نرم*افزار شامل مجموعه* یکپارچه*ای از ابزارهای برنامه*نویسی است که به توسعه*دهندگان امکان می*دهد انواع مختلف نرم*افزارهای مالتی*مدیا را روی پلتفرم ویندوز تولید کنند. DirectX به برنامه*ای که بر پایه آن طراحی شده امکان می*دهد به آسانی قابلیت*های سخت*افزار کامپیوتر را شناسایی کند و پارامترهای برنامه را با آن هماهنگ سازد.
DirectX شامل APIهایی است که دسترسی به بخش*های ویژه*ای از سخت*افزار مانند تراشه*های شتاب*دهنده گرافیک سه*بعدی و کارت صوتی را میسرمی*کند. این APIها کنترل توابع سطح پایین، یعنی نزدیک به سخت*افزار، شامل شتاب*دهنده گرافیکی دو بعدی، پشتیبانی از دستگاه*های ورودی مانند دسته بازی، صفحه*کلید و ماوس، و کنترل میکس و خروجی صدا را انجام می*دهند.
DirectX ۷.۰ در سال ۱۹۹۹ با شش کامپوننت عرضه شد که عبارت بودند از: Direct۳D،DirectDraw ،DirectSound ،DirectPlay ،DirectInput و DirectMusic.
در اواخر سال ۲۰۰۰ میلا*دی، DirectX ۸.۰ عرضه شد که در آن کامپوننت*های DirectSound و DirectMusic با هم ادغام شدند و با نام کامپوننت Direct Audio معرفی شدند.
Direct۳D و DirectDraw نیز با هم ادغام شدند و یک کامپوننت با نام DirectX Graphics را ساختند. DirectShow نیز به صورت یک API جداگانه پیاده*سازی شد و به یکی از کامپوننت*های DirectX تبدیل گردید.
DirectX ۹.۰ در ژانویه سال ۲۰۰۳ عرضه شد. ویژگی*های خاص این نسخه عبارتند از:
- قابلیت*های صوتی جدید در DirectSound
- سخت*افزار رندرکننده ویدیویی با شتاب بیشتر
- بهبود قابلیت برنامه*ریزی گرافیکی
APIهای همه کامپوننت*های DirectX برپایه COM یا Component Object Model هستند. در ادامه به بررسی هفت کامپوننت DirectX ۹.۰ می*پردازیم که عبارتند از: DirectDraw ،Direct۳D ،DirectShow ،DirectSound ،DirectMusic ،DirectInput و DirectPlay.
۱- DirectDraw
DirectDraw، کامپوننتی ویژه طراحی دوبعدی است که به برنامه*نویس اجازه می*دهد مستقیماً به حافظه کارت گرافیک دسترسی یابد، صحنه*ها و فریم*ها را با هم ترکیب نماید یا bitmapها را در آنجا ذخیره کند. همچنین، برای برنامه*ها امکان دسترسی به سخت*افزارهای ویژه نمایش را مستقل از نوع سخت*افزار فراهم می*کند.
هر برنامه کاربردی DirectDraw الگوی یکسانی دارد که عبارت است از:
- ایجاد یک شی
- شروع حلقه
- انتقال به مانتیور
- پایان حلقه
- پاک کردن آن شی*
منظور از واژه <یک شی> می*تواند هر تصویر دوبعدی*ای باشد و منظور از حلقه، حلقه*ای است که در برنامه*نویسی هنگام تکرار منظم دسته*ای از داده*ها یا دستورها به کار می*بریم. تصویر ایجاد*شده پس از مدتی پاک می*شود و جای خود را به تصویر دیگری می*دهد.
۲- Direct۳D
این کامپوننت، دسترسی به توابع رندرکننده گرافیک سه*بعدی تعبیه شده در بیشتر کارت*های گرافیک را فراهم می*کند. Direct۳D یک API سطح پایین سه*بعدی است که به نرم*افزار امکان می*دهد مستقل از سخت*افزار، با سخت*افزار شتاب*دهنده ارتباط برقرار کند. لا*یه*ای که برای توسعه*دهندگان بازی و گرافیک کامپیوتری امکان طراحی و ساخت بازی*ها را مستقل از سخت*افزار کامپیوترها فراهم می*کند، لا*یه*ای به نام
Hardware Abstraction Layer) HAL) است.
HAL با قابلیت*هایی که به صورت گسترده در سخت*افزارهای گرافیک سه*بعدی پیاده*سازی شده*اند ارتباط ایجاد می*کند و به سازندگان امکان*می*دهد درایورهایی را تولید کنند که لا*یه HAL را به سخت*افزار پیوند دهد. این کار باعث می*شود برنامه*های کاربردی Direct ۳D بدون این*که برای نوع خاصی از قطعه سخت*افزاری نوشته شده باشد، از ویژگی*های بخش*های خاص آن قطعه سخت*افزاری بهره*ببرد. در شکل یک چگونگی ارتباط لا*یه HAL با سخت*افزار و نرم*افزارهای مرتبط نشان داده شده است.
کاهش زمان رندر به استفاده از نقشه بافت*ها نیاز دارد. این نسخه تکنیک*هایی برای افزودن جلوه*ای واقعی*تر به صحنه*های سه بعدی را نیز دربردارد.
مانند anistropic filtering که عنصر عمق را به trilinear filtering و نقشه برجسته*سازی می*افزاید که موجب ایجاد شباهت بیشتر بافت*ها و نیز منابع نور تابیده شده بر سطوح مسطح با نمونه*های واقعی آن*ها می*شود.
نسخه هفتم DirectX نسبت به نسخه*های پیش از خود بیست درصد سریع*تر و شامل چند ویژگی دیگر بود. مهم*ترین آن*ها پشتیبانی از تغییرات شتاب سخت*افزاری و نوردهی (T&L) به وسیله اغلب کارت*های گرافیک سه*بعدی آن*زمان به ویژه کارت*هایی است که برپایه تراشه*های nVidia Geforce ۲۵۶ و S۳ Savage ۲۰۰۰ ساخته شده*اند. از زمانی که T&L عرضه شد، وقت*گیرترین وظیفه CPU هنگام اجرای بازی*های پیشرفته به شتاب*دهنده سه*بعدی داده شد و بخش بزرگی از ظرفیت پردازنده اصلی به کارهای دیگر مانند هوش*مصنوعی بازی اختصاص داده شد و توسعه*دهندگان بازی توانستند رندر را با جزییات بیشتر انجام دهند و جلوه*های ویژه پیچیده*تری را در بازی*ها به*کار ببرند.
۳- DirectShow
این کامپوننت از بسیاری از فرمت*های صوتی و ویدیویی شامل AVI ،MPEG ،ASF ،WMA/WMV ،DV و MP۳ و DirectX پشتیبانی می*کند و روی ویندوزهای ۹۸، ۲۰۰۰، اکس*پی و نرم*افزار اینترنت اکسپلورر عرضه شده است.DirectShow پروسه کارهای مالتی*مدیا مانند نمایش فایل ویدیویی را به مجموعه*ای از مراحل که با نام
filter شناخته می*شوند تقسیم می*کند.
فیلترها تعدادی pin ورودی و خروجی دارند که آن*ها را به هم متصل می*کند. طراحی کلی سازوکار اتصال به این صورت است که فیلترها می*توانند به روش*های مختلف به هم متصل شوند که هر نوع از این اتصال*ها به معنی انجام دادن یک کار است و توسعه*دهندگان نرم*افزار می*توانند افکت*های خود یا فیلترهای دیگری را به بخشی از این گراف برای انجام کار ویژه*ای بیفزایند. گراف فیلتر DirectShow به صورت گسترده در ضبط صدا و فیلم، و ویرایش آن*ها به کار می*رود.
ولی در برخی مواقع، برنامه کاربردی علا*وه بر کنترل گراف، دریافت*کننده یا فرستنده داده نیز هست.
هر گره این گراف، همانگونه که گفته شد، یک فیلتر است و کار ویژه خود را انجام می*دهد. فیلتر source، داده*ها را از یک فایل یا URL می*خواند. فیلتر Parser، بخش*هایی از داده*های صوتی و ویدیویی را به رمزگشای مناسب می*فرستد. رمزگشاها، داده*های صوتی و ویدیویی را رمزگشایی می*نمایند یا از حالت فشردگی خارج می*کنند.
فیلتر رندرکننده، داده*های دریافت شده صوتی و ویدیویی از رمزگشا را پخش می*کند یا آن*ها را نمایش می*دهد.
۴- DirectSound
این کامپوننت همزمان با ساخت ویندوز ۹۵، زمانی که درایورهای صوتی از نوع VXD بودند به DirectX افزوده شد. در این کامپوننت APIهای ویژه*ای ایجاد شد که نویسندگان درایورهای صوتی می*بایست آن*ها را به محصولا*ت خود، که فرمت VXD داشت، می*افزودند تا به درستی با DirectSound کار کند.
برنامه*های چندرسانه*ای با این کامپوننت به سخت*افزارهای صوتی مانند کارت صوتی دسترسی پیدامی*کنند. از مهم*ترین ویژگی*های این API، ترکیب صدا و کنترل سطح آن است.
DirectSound همچنین اجازه می*دهد چندین برنامه کاربردی، بدون پیش آوردن وقفه، همزمان به کارت صوتی دسترسی داشته باشند. ایجاد افکت*های صوتی از دیگر توانایی*های DirectSound است. پس از سال*ها توسعه، اکنون DirectSound یک API پخته و کامل است و بسیاری قابلیت*های دیگر را نیز فراهم می*کند؛ مانند قابلیت پخش صداهای چند کاناله با وضوح و دقت بالا*.
۵- DirectMusic
تاکنون بازی*هایی را تجربه کرده*اید که در تمام مدت یک مرحله، موسیقی یکنواخت و ثابتی دارند؟ بازی*ای را در نظر بگیرید که برنامه*نویسان آن می*خواهند یک آهنگ، در تمام مدت، در یک مرحله از آن به صدا دربیاید. با استفاده از برنامه DirectMusic Producer، آن*ها می*توانند در آن مرحله برای آهنگ، یک درجه در نظر بگیرند.
این درجه می*تواند بسته به نوع عملکرد شخصیت بازی، تغییر کند. اگر شخصیت بازی در حال راه رفتن است، آهنگ آرام و هنگامی که با دشمن خود مبارزه می*کند، آهنگ تندتر می*شود و یا نوع آهنگ تغییر می*کند و هنگامی که مبارزه تمام می*شود، آهنگ دوباره آرام می*شود. این تغییرها بدون ایجاد وقفه، به صورت پویا و بدون دخالت کاربر انجام می*شود. چون براساس DirecMusic، آهنگ به صورت شناور و بدون وقفه با نواختن واریاسیون*های مختلف با قابلیت واکنش به رویدادهای بازی تولید می*شود.
DirectMusic، با داده*های موسیقی براساس پیام*های حاوی اطلا*عات کار می*کند. یک آهنگ می*تواند در داخل سخت*افزار و با نرم*افزارهای آهنگ*ساز مانند Microsoft *Synthesizer ساخته شود. DirectMusic از استانداردهایMIDI و DLS پشتیبانی می*کند.
۶- DirectInput
این کامپوننت، سازوکار مشترکی را برای دسترسی به بسیاری از کنترل*کننده*های بازی مانند دسته بازی، گیم*پد، صفحه کلید و ماوس فراهم می*آورد. مهم*ترین تغییری که هنگام عرضه DirectX۸ در DirectInput ایجاد شد، آمدنaction map بود. action map از توابعی مانند راندن یک وسیله یا شلیک یک گلوله (که به*وسیله دستگاه*های ورودی ایجاد می*شود) استفاده می*کند. زمانی که یک سخت*افزار ورودی مانند دسته بازی را می*خرید، معمولا *ًaction mapنیز برای بسیاری از انواع رایج بازی*ها مانند شبیه*ساز پرواز، تیراندازی اول شخص و بازی*های مسابقه*ای در آن پیاده*سازی شده است.
۷- DirectPlay
این کامپوننت امکان بازی چند نفر را در بازی*های چندنفره فراهم می*آورد، دسترسی به سرویس*های ارتباطی را آسان می*سازد و راهی را برای بازی*ها فراهم می*کند تا مستقل از پروتکل یا نوع سرویس آنلا*ین با یکدیگر در ارتباط باشند. همچنین از پروتکل*های ارتباطی مطمین پشتیبانی*می*کند تا مانع از گم شدن داده*های مهم بازی روی شبکه شود. در واقع DirectPlay به صورت لا*یه*ای است که روی پروتکل*های معمول شبکه مانند IPX ،TCP/IP و … قرار دارد.
در واقع یک session یا جلسه در DirectPlay یک کانال ارتباطی بین چندین کامپیوتر است. یک برنامه کاربردی پیش از آن*که بتواند با سیستم*های دیگر ارتباط برقرار کند، باید در یک Session یا جلسه باشد. هر جلسه تنها یک میزبان دارد و آن برنامه کاربردی*ای است که آن جلسه را ایجاد کرده*است. تنها میزبان می*تواند ویژگی*های یک Session را تغییر دهد.
DirectX ۹.۰
این کامپوننت، آخرین نسخه DirectX تا پیش از عرضه رسمی ویندوز ویستا است. مهم*ترین چیزی که همراه DirectX ۹.۰ عرضه شد، High-Level Shader Language) HLSL) است. زبان HLSL جایگزین زبان اسمبلی برای نوشتن pixel shaderها و vertex shaderها در DirectX است. پیش از ارایه DirectX ۹.۰ توسعه*دهندگان بازی بایدshader*ها را با استفاده از یک زبان اسمبلی سطح پایین توسعه می*دادند. HLSL با فراهم*آوردن یک محیط برنامه*نویسی توسعه*دهنده ساده، توسعه همه بخش*های نرم*افزار مانند انیمیشن و برنامه*نویسی افکت*ها را آسان می*کند.
HLSL با همه پردازشگرهای گرافیکی (GPU) سازگار با DirectX کار می*کند و به توسعه*دهندگان امکان می*دهد افکت*های بصری را روی گستره وسیع*تری از پلتفرم*ها ایجاد کنند؛ بدون این*که نیاز داشته باشند به جزییات سخت*افزار گرافیکی توجه کنند.
DirectX ۹.۰ روی ویندوز ۹۵ نصب نمی*شود. چون بازی*هایی که به DirectX ۹.۰ نیاز دارند، به کامپیوترهای جدیدتر و قوی*تری هم نیاز دارند که ویندوز ۹۸ یا نسخه*های جدیدتر روی آن*ها نصب می*شود. تاکنون نسخه*های a ،b و c از DirectX ۹.۰ ارایه شده است. هر نسخه جدیدتر از DirectX دارای امنیت، کارایی و سیستم رفع خطای بهتری است.
DirectX ۱۰
دوستداران بازی باید خوشحال باشند از این*که بدانند شرکت مایکروسافت DirectX را نیز تولید کرده است و همراه پیش توزیع Direct۳D ۱۰ عرضه خواهد شد. همچنین نرم*افزارMicrosoft Windows Game Explorer نیز عرضه شده* که به برنامه*نویسان و توسعه*دهندگان امکان می*دهد امکانات بروزکردن خودکار (auto-updating) را به بازی*هایشان بیفزایند. مایکروسافت می*خواهد DirectX ۹.۰ و DirectX ۱۰ را روی ویندوز ویستا عرضه کند. به گفته Rodolph Balaz از برنامه*نویسان توسعه**دهنده Direct۳D و OpenGL در مایکروسافت، DirectX ۱۰ تنها با سیستم*عامل*های جدید کار خواهد کرد و در حال حاضر مایکروسافت، برنامه*ای برای پشتیبانی ویندوز اکس*پی از آن ندارد.
تا زمان نوشته شدن این مقاله هنوز نسخه رسمی ویندوز ویستا عرضه نشده است. ولی به نظر می*آید این ویندوز، هم از DirectX ۱۰ و هم از DirectX ۹.۰ پشتیبانی خواهد کرد.
SGL OpenGL
شرکت سیلیکون گرافیکس(SGI ،OpenGL) را با هدف ساخت یک API برای توسعه برنامه*های گرافیکی دوبعدی و سه بعدی عرضه*کرده*است. پیش از ساخته شدن APIهای گرافیکی مانند OpenGL و DirectX، بسیاری از تولیدکنندگان سخت*افزار، کتابخانه*های گرافیکی مختلف و متفاوتی داشتند. به همین دلیل پشتیبانی از نسخه*های مختلف نرم*افزارهایشان روی پلتفرم*های سخت*افزاری مختلف هزینه*بر و انتقال یک برنامه کاربردی از یک پلتفرم سخت*افزاری به پلتفرم سخت*افزاری دیگر بسیار وقت*گیر و سخت بود.
بنابراین SGI نمونه برنامه*ای را تولید کرد که تولیدکنندگان سخت*افزار باید از آن برای توسعه درایورهای OpenGL در سخت*افزارهایشان استفاده کنند. این برنامه به صورت اپن*سورس ارایه شده*است. ولی سازندگان این سخت*افزارها می*توانند قابلیت*های گوناگونی را برپایه OpenGL در سخت*افزارهایشان ایجاد کنند. تصمیم*گیری درباره ایجاد تغییرات در OpenGL را کنسرسیوم ARB اتخاذ می*کند.
این کنسرسیوم شامل اعضای مهمی همچون اپل، اینتل، آی*بی*ام، سان، ATI، دل، nVIDIA، سیلیکون*گرافیکس و۳Dlabs است و از سوی شرکت*های معتبر دیگری مانند متراکس، S۳ ،Xi و Quantum ۳D حمایت می*شود. توسعه*دهندگان نرم*افزار برای استفاده از OpenGL در نرم*افزارهایشان نیازی به اخذ مجوز ندارند. ولی تولیدکنندگان سخت*افزار برای پیاده*سازی سخت*افزاری OpenGL نیازمند اخذ مجوز از SGI هستند.
OpenGL چیست؟
در اوایل پیدایش OpenGL، از این API در کارهای صنعتی، طراحی وسایل داخلی، مکانیکی و نیز در آنالیزهای علمی و آماری استفاده می*شد.
در سال ۱۹۹۶، نویسندگان و توسعه*دهندگان بازی*های کامپیوتری از نسخه ویندوزی OpenGL برای ساخت بازی*های کامپیوتری استفاده کردند. OpenGL برای پشتیبانی از گستره وسیعی از تکنیک*های رندرکردن گرافیکی پیشرفته طراحی شده است که می*توان پاره*ای از آن*ها را به این*صورت نام برد:
نورپردازی: قابلیت تحلیل میزان رنگ هنگام تابش مدل*های متفاوت نور به یک سطح از یک یا چند منبع نور مختلف.
سایه*سازی نرم: قابلیت تحلیل افکت*های سایه هنگام تابش نور به یک زاویه و ایجاد اختلا*ف نور خفیف در مقابل آن سطح (مانند نور کمی که هنگام تابش آفتاب به یک صخره یخی در اطراف آن ایجاد می*شود).
حرکت محو ومدل*سازی: توانایی تغییر مکان و اندازه پرسپکتیو یک شی در فضای سه بعدی.
مجموعه امکانات OpenGL شبیه Direct۳D است. ولی API سطح پایین*تر آن (نزدیک*تر به سطح سخت*افزار) باعث می*شود کنترل خوبی روی عناصر اصلی ایجاد صحنه*های سه بعدی مانند اطلا*عات سه*ضلعی*ها که سلول*های تشکیل*دهنده یک مدل سه بعدی هستند داشته باشد.
دو سطح پشتیبانی از شتاب*دهندگی سخت*افزاری برای OpenGL وجود دارد: installing client driver) ICDs) که به نوردهی ایجاد تغییر و رسترکردن (تبدیل یک فریم سه بعدی چند ضلعی ذخیره شده درframe buffer به یک تصویر کامل با بافت*ها و نشانه*های عمق و نور) شتاب می*دهد و mini client server) MCs) که از رسترکردن پشتیبانی می*کند.
OpenGL ۱.۴ و OpenGL ۱.۵ به*ترتیب در تابستان ۲۰۰۲ و ۲۰۰۳ معرفی شدند که هر یک امکانات و کاربردهای بیشتری از نسخه*های پیش از خود داشتند. بزرگ*ترین آن*ها OpenGL Shading Language بود؛ زبانی ویژه برنامه*نویسی vertex-shader و pixel-shader که در صورت نیاز به OpenGL الصاق می*شد. OpenGLShading Language زبانی شد که به سرعت در سطح گسترده*ای مورد پشتیبانی یونیکس، ویندوز، لینوکس و دیگر سیستم*عامل*ها برای توسعه*دهنده گرافیک*های تعاملی و برنامه*های کاربردی ترسیمی قرار گرفت.
OpenGL ۲.۰
OpenGL ۲.۰ آخرین نسخه عرضه شده تا اوایل سال ۲۰۰۶ میلا*دی است. OpenGL Shader Language همراه با این نسخه عرضه شده و بر پایه استاندارد ANSYC طراحی شده است. برخی قابلیت*های تازه این نسخه عبارتند از:
- سایه*زنی قابل برنامه*ریزی به*وسیله OpenGL Shader Language و APIهای آن. قدرت ایجاد Shader و برنامه*نویسی اشیا، بخش دیگری از تغییرات ایجاد شده در این نسخه است.
- رندر چندگانه که به shaderهای قابل برنامه*نویسی امکان می*دهد در بافرهای خروجی چندگانه در یک گذر مقادیر مختلفی بنویسند.
- بافت*های دو طرفه، با قابلیت تعریف کاربرد آن بافت برای سطح جلو و پشت یک مدل اولیه که کیفیت حجم سایه و کارایی الگویم*های رندر هندسی اشیای سخت را ارتقا می*دهد.
- Spriteهای نقطه که مختصات بافت یک نقطه را با مختصات بافت قرار داده شده در مقابل آن نقطه جابه*جا می*کنند و رسم نقاط را در بافت*های طراحی شده در کامپیوترهای معمولی نیز ممکن می*سازند.
- بافت*های Non-power-of-two که برای همه انواع بافت* کاربرد دارد که در نتیجه از بافت*های چهارگوش پشتیبانی می*نماید و درعمل حافظه کمتری اشغال می*کند.
OpenAL
OpenAL، یک API دیگر است که برای ایجاد و مدیریت صداهای سه بعدی در بازی*های کامپیوتری و دیگر انواع نرم*افزارها به صورت یک پروژه مشترک میان شرکت Loki Software و Creative ساخته شده است.
کتابخانه این API مجموعه*ای از صداهای قابل حرکت در فضای سه*بعدی را مدل*سازی می*کند. عناصر اصلی OpenAL شامل یک شنونده، یک منبع و یک بافر است. ممکن است تعداد زیادی بافر وجودداشته باشد که شامل داده*های صوتی هستند. هر بافر می*تواند به یک یا چند منبع ضمیمه شود. همیشه یک عنصر شنونده (برای محتوای صوتی) وجود دارد که موقعیت مکانی منبع صوتی که صدای آن شنیده می*شود را نشان می*دهد. OpenAL در موتورهای گرافیکی Epic Games Unreal نیز برای ساخت افکت*های صوتی به کار می*رود.
OpenGL Performer
OpenGL Performer، رابط برنامه*نویسی قدرتمند و کاملی است که توسعه*دهندگان برای شبیه*سازی بصری از آن استفاده می*کنند. ابزارهای موجود در آن، توسعه برنامه*های شبیه*سازی بصری، طراحی بر اساس شبیه*سازی، واقعیت مجازی، نرم*افزارهای علمی، سرگرمی*های تعاملی، برنامه*های ویدیویی و طراحی با کامپیوتر را آسان می*کند. این رابط برنامه*نویسی به برنامه*نویسان امکان می*دهد از قابلیت*های سیستم به صورت بهینه استفاده کنند. آخرین نسخه این نرم*افزار OpenGL Performer ۳.۲ است.
OpenGL Volumizer
OpenGL Volumizer، یک API گرافیکی است که در بخش*های انرژی، تولید، داروسازی و تجارت کاربرد دارد. این API برای انجام کارهای تعاملی با کیفیت بالا* و بصری نمودن و شبیه*سازی یک محیط با استفاده از مجموعه بزرگی از داده*های حجمی (داده*هایی که مختصات یک شی در فضای سه بعدی را نشان می*دهند) طراحی شده است. برای نمونه در نرم*افزارهای پزشکی برای شبیه*سازی وضعیت بخش خاصی از بدن، از این نرم*افزار استفاده می*شود. OpenGL Volumizer آخرین نسخه این API تا اوایل سال ۲۰۰۶ میلا*دی است که بر پایه کتابخانه گرافیکی استانداردOpenGL ساخته شده و شامل رابط کلا*س ++C و قابل*استفاده در سیستم*عامل*های ویندوز و لینوکس ۳۲بیتی و ۶۴*بیتی است.
OpenGL Multipipe SDK
OpenGL Multipipe SDK یک لا*یه API است که مدیریت برنامه*های گرافیکی را در زیر سیستم*ها و ساختارهای گرافیکی چندگانه آسان می*کند. برنامه*های کاربردی نوشته شده برپایه این API به نرمی و روانی، هم روی سیستم*های رومیزی تک پردازنده*ای و هم روی سیستم*های چند پردازنده*ای با سیستم*های گرافیکی قدرتمند اجرا می*شوند.
نتیجه*گیری*
همان*گونه که بیان شد ارتباط بین برنامه*ها و سخت*افزاری که آن*را اجرا می*کند برعهده API است. سازندگان بزرگ نرم*افزار و سخت*افزار API خاصی را برای برنامه*های مالتی*مدیا آماده کرده*اند که مطرح ترین آن*ها DirectX و OpenGL هستند.
یک بازی کامپیوتری را روی کامپیوترتان اجرا می*کنید. فعلا*ً کارت گرافیک شما روی اسلا*تAGP سوار می*شود، پردازشگر سلرون دارید و … پس از چند ماه یا چند سال کامپیوتر جدیدی می*خرید. اکنون اسلا*ت کارت گرافیکی شما PCI Express است و یک پردازشگر ۶۴ بیتی دارید. همان بازی را روی این کامپیوتر هم نصب و اجرامی*کنید! شاید به نظر طبیعی میآید که همه چیز باید همین*طور باشد. اما چگونه یک بازی روی کامپیوترهایی با تراشه*ها و سخت*افزارهای مختلف و گاه فناوری متفاوت اجرا می*شود؟ API*های گرافیکی یا همان رابط*های برنامه*نویسی، بخش بزرگی از این مشکل را حل می*کنند و امکانات گسترده دیگری را نیز در اختیار برنامه*نویسان و توسعه*دهندگان بازی و برنامه*های چندرسانه*ای قرارمی*دهند. OpenGL وDirectX، دو مجموعه API گرافیکی و صوتی هستند که برای آسان*تر ساختن توسعه بازی*ها و نرم*افزارهای چندرسانه*ای طراحی شده*اند.
![1002395_b.jpg](http://www.shabakeh-mag.com/Data/1002395_b.jpg)
API درواقع بین برنامه و سخت*افزاری که برنامه روی آن اجرا می*شود، نقش یک هماهنگ*کننده را دارد و مانند پلی میان سخت*افزار و نرم*افزار ارتباط ایجاد*می*کند. یعنی برنامه*نویس کدهایی می*نویسد که داده*های گرافیکی خود را به وسیله دستورهای استانداردی به درایور API می*فرستد نه مستقیماً به خود سخت*افزار. سپس درایوری که شرکت سازنده سخت*افزار تولید*کرده است، این کداستاندارد تولیدشده را به فرمت بومی و ویژه*ای که برای آن مدل خاص سخت*افزار قابل شناسایی است، ترجمه می*کند.
Microsoft DirectX
شرکت مایکروسافت در سال ۱۹۹۵ DirectX را ساخته و توسعه داده*است. این نرم*افزار شامل مجموعه* یکپارچه*ای از ابزارهای برنامه*نویسی است که به توسعه*دهندگان امکان می*دهد انواع مختلف نرم*افزارهای مالتی*مدیا را روی پلتفرم ویندوز تولید کنند. DirectX به برنامه*ای که بر پایه آن طراحی شده امکان می*دهد به آسانی قابلیت*های سخت*افزار کامپیوتر را شناسایی کند و پارامترهای برنامه را با آن هماهنگ سازد.
DirectX شامل APIهایی است که دسترسی به بخش*های ویژه*ای از سخت*افزار مانند تراشه*های شتاب*دهنده گرافیک سه*بعدی و کارت صوتی را میسرمی*کند. این APIها کنترل توابع سطح پایین، یعنی نزدیک به سخت*افزار، شامل شتاب*دهنده گرافیکی دو بعدی، پشتیبانی از دستگاه*های ورودی مانند دسته بازی، صفحه*کلید و ماوس، و کنترل میکس و خروجی صدا را انجام می*دهند.
DirectX ۷.۰ در سال ۱۹۹۹ با شش کامپوننت عرضه شد که عبارت بودند از: Direct۳D،DirectDraw ،DirectSound ،DirectPlay ،DirectInput و DirectMusic.
در اواخر سال ۲۰۰۰ میلا*دی، DirectX ۸.۰ عرضه شد که در آن کامپوننت*های DirectSound و DirectMusic با هم ادغام شدند و با نام کامپوننت Direct Audio معرفی شدند.
Direct۳D و DirectDraw نیز با هم ادغام شدند و یک کامپوننت با نام DirectX Graphics را ساختند. DirectShow نیز به صورت یک API جداگانه پیاده*سازی شد و به یکی از کامپوننت*های DirectX تبدیل گردید.
DirectX ۹.۰ در ژانویه سال ۲۰۰۳ عرضه شد. ویژگی*های خاص این نسخه عبارتند از:
- قابلیت*های صوتی جدید در DirectSound
- سخت*افزار رندرکننده ویدیویی با شتاب بیشتر
- بهبود قابلیت برنامه*ریزی گرافیکی
APIهای همه کامپوننت*های DirectX برپایه COM یا Component Object Model هستند. در ادامه به بررسی هفت کامپوننت DirectX ۹.۰ می*پردازیم که عبارتند از: DirectDraw ،Direct۳D ،DirectShow ،DirectSound ،DirectMusic ،DirectInput و DirectPlay.
۱- DirectDraw
DirectDraw، کامپوننتی ویژه طراحی دوبعدی است که به برنامه*نویس اجازه می*دهد مستقیماً به حافظه کارت گرافیک دسترسی یابد، صحنه*ها و فریم*ها را با هم ترکیب نماید یا bitmapها را در آنجا ذخیره کند. همچنین، برای برنامه*ها امکان دسترسی به سخت*افزارهای ویژه نمایش را مستقل از نوع سخت*افزار فراهم می*کند.
هر برنامه کاربردی DirectDraw الگوی یکسانی دارد که عبارت است از:
- ایجاد یک شی
- شروع حلقه
- انتقال به مانتیور
- پایان حلقه
- پاک کردن آن شی*
منظور از واژه <یک شی> می*تواند هر تصویر دوبعدی*ای باشد و منظور از حلقه، حلقه*ای است که در برنامه*نویسی هنگام تکرار منظم دسته*ای از داده*ها یا دستورها به کار می*بریم. تصویر ایجاد*شده پس از مدتی پاک می*شود و جای خود را به تصویر دیگری می*دهد.
۲- Direct۳D
این کامپوننت، دسترسی به توابع رندرکننده گرافیک سه*بعدی تعبیه شده در بیشتر کارت*های گرافیک را فراهم می*کند. Direct۳D یک API سطح پایین سه*بعدی است که به نرم*افزار امکان می*دهد مستقل از سخت*افزار، با سخت*افزار شتاب*دهنده ارتباط برقرار کند. لا*یه*ای که برای توسعه*دهندگان بازی و گرافیک کامپیوتری امکان طراحی و ساخت بازی*ها را مستقل از سخت*افزار کامپیوترها فراهم می*کند، لا*یه*ای به نام
Hardware Abstraction Layer) HAL) است.
HAL با قابلیت*هایی که به صورت گسترده در سخت*افزارهای گرافیک سه*بعدی پیاده*سازی شده*اند ارتباط ایجاد می*کند و به سازندگان امکان*می*دهد درایورهایی را تولید کنند که لا*یه HAL را به سخت*افزار پیوند دهد. این کار باعث می*شود برنامه*های کاربردی Direct ۳D بدون این*که برای نوع خاصی از قطعه سخت*افزاری نوشته شده باشد، از ویژگی*های بخش*های خاص آن قطعه سخت*افزاری بهره*ببرد. در شکل یک چگونگی ارتباط لا*یه HAL با سخت*افزار و نرم*افزارهای مرتبط نشان داده شده است.
![s63_gpl_1_s.jpg](http://www.shabakeh-mag.com/Data/Gallery/s63_gpl_1_s.jpg)
شکل ۱ - چگونگی ارتباط لا*یه HAL با کارت گرافیک و نرم*افزارهای مرتبط*
در سیستم رندر Direct۳D، ساختار اشیای سه*بعدی پیش از آن*که شتاب*دهنده سه*بعدی، یک صحنه سه*بعدی را رندر نماید و آن را به مانیتور منتقل کند، به وسیله CPU پردازش می*شود. نسخه ششم کامپوننت Direct۳D از قابلیت*های کارت*های گرافیک جدیدتر پشتیبانی می*نماید و در هر گذر، چندین بافت را با هم رندر می*کند. همان*گونه که در شکل یک، نشان داده شده، نرم*افزار بازی بالا*ترین سطح است و پس از آن کامپوننت*های ترسیم دوبعدی و سه بعدی، یعنی DirectDraw و Direct۳D قرار دارند. لا*یه HAL یک رابط میان کامپوننت*های DirectX و کارت گرافیک است.
کاهش زمان رندر به استفاده از نقشه بافت*ها نیاز دارد. این نسخه تکنیک*هایی برای افزودن جلوه*ای واقعی*تر به صحنه*های سه بعدی را نیز دربردارد.
مانند anistropic filtering که عنصر عمق را به trilinear filtering و نقشه برجسته*سازی می*افزاید که موجب ایجاد شباهت بیشتر بافت*ها و نیز منابع نور تابیده شده بر سطوح مسطح با نمونه*های واقعی آن*ها می*شود.
نسخه هفتم DirectX نسبت به نسخه*های پیش از خود بیست درصد سریع*تر و شامل چند ویژگی دیگر بود. مهم*ترین آن*ها پشتیبانی از تغییرات شتاب سخت*افزاری و نوردهی (T&L) به وسیله اغلب کارت*های گرافیک سه*بعدی آن*زمان به ویژه کارت*هایی است که برپایه تراشه*های nVidia Geforce ۲۵۶ و S۳ Savage ۲۰۰۰ ساخته شده*اند. از زمانی که T&L عرضه شد، وقت*گیرترین وظیفه CPU هنگام اجرای بازی*های پیشرفته به شتاب*دهنده سه*بعدی داده شد و بخش بزرگی از ظرفیت پردازنده اصلی به کارهای دیگر مانند هوش*مصنوعی بازی اختصاص داده شد و توسعه*دهندگان بازی توانستند رندر را با جزییات بیشتر انجام دهند و جلوه*های ویژه پیچیده*تری را در بازی*ها به*کار ببرند.
۳- DirectShow
این کامپوننت از بسیاری از فرمت*های صوتی و ویدیویی شامل AVI ،MPEG ،ASF ،WMA/WMV ،DV و MP۳ و DirectX پشتیبانی می*کند و روی ویندوزهای ۹۸، ۲۰۰۰، اکس*پی و نرم*افزار اینترنت اکسپلورر عرضه شده است.DirectShow پروسه کارهای مالتی*مدیا مانند نمایش فایل ویدیویی را به مجموعه*ای از مراحل که با نام
filter شناخته می*شوند تقسیم می*کند.
فیلترها تعدادی pin ورودی و خروجی دارند که آن*ها را به هم متصل می*کند. طراحی کلی سازوکار اتصال به این صورت است که فیلترها می*توانند به روش*های مختلف به هم متصل شوند که هر نوع از این اتصال*ها به معنی انجام دادن یک کار است و توسعه*دهندگان نرم*افزار می*توانند افکت*های خود یا فیلترهای دیگری را به بخشی از این گراف برای انجام کار ویژه*ای بیفزایند. گراف فیلتر DirectShow به صورت گسترده در ضبط صدا و فیلم، و ویرایش آن*ها به کار می*رود.
![s63_gpl_2_s.jpg](http://www.shabakeh-mag.com/Data/Gallery/s63_gpl_2_s.jpg)
شکل ۲ - یک گراف فیلتر که کار نمایش یک فایل MPEG را نشان می*دهد.
داده*های چند رسانه*ای در این گراف (در حالی که کارها به وسیله برنامه کاربردی کنترل می*شوند) از فایل منبع به سمت مقصد که می*تواند یک قطعه سخت*افزاری باشد حرکت می*کنند. در شکل دو، یک گراف نمایش برای فایل فیلمی از نوع MPEG نشان داده شده است. برنامه*های کاربردی DirectShow، برای پردازش داده*های مالتی*مدیا، از این گراف استفاده می*کنند.
ولی در برخی مواقع، برنامه کاربردی علا*وه بر کنترل گراف، دریافت*کننده یا فرستنده داده نیز هست.
هر گره این گراف، همانگونه که گفته شد، یک فیلتر است و کار ویژه خود را انجام می*دهد. فیلتر source، داده*ها را از یک فایل یا URL می*خواند. فیلتر Parser، بخش*هایی از داده*های صوتی و ویدیویی را به رمزگشای مناسب می*فرستد. رمزگشاها، داده*های صوتی و ویدیویی را رمزگشایی می*نمایند یا از حالت فشردگی خارج می*کنند.
فیلتر رندرکننده، داده*های دریافت شده صوتی و ویدیویی از رمزگشا را پخش می*کند یا آن*ها را نمایش می*دهد.
۴- DirectSound
این کامپوننت همزمان با ساخت ویندوز ۹۵، زمانی که درایورهای صوتی از نوع VXD بودند به DirectX افزوده شد. در این کامپوننت APIهای ویژه*ای ایجاد شد که نویسندگان درایورهای صوتی می*بایست آن*ها را به محصولا*ت خود، که فرمت VXD داشت، می*افزودند تا به درستی با DirectSound کار کند.
برنامه*های چندرسانه*ای با این کامپوننت به سخت*افزارهای صوتی مانند کارت صوتی دسترسی پیدامی*کنند. از مهم*ترین ویژگی*های این API، ترکیب صدا و کنترل سطح آن است.
DirectSound همچنین اجازه می*دهد چندین برنامه کاربردی، بدون پیش آوردن وقفه، همزمان به کارت صوتی دسترسی داشته باشند. ایجاد افکت*های صوتی از دیگر توانایی*های DirectSound است. پس از سال*ها توسعه، اکنون DirectSound یک API پخته و کامل است و بسیاری قابلیت*های دیگر را نیز فراهم می*کند؛ مانند قابلیت پخش صداهای چند کاناله با وضوح و دقت بالا*.
۵- DirectMusic
تاکنون بازی*هایی را تجربه کرده*اید که در تمام مدت یک مرحله، موسیقی یکنواخت و ثابتی دارند؟ بازی*ای را در نظر بگیرید که برنامه*نویسان آن می*خواهند یک آهنگ، در تمام مدت، در یک مرحله از آن به صدا دربیاید. با استفاده از برنامه DirectMusic Producer، آن*ها می*توانند در آن مرحله برای آهنگ، یک درجه در نظر بگیرند.
این درجه می*تواند بسته به نوع عملکرد شخصیت بازی، تغییر کند. اگر شخصیت بازی در حال راه رفتن است، آهنگ آرام و هنگامی که با دشمن خود مبارزه می*کند، آهنگ تندتر می*شود و یا نوع آهنگ تغییر می*کند و هنگامی که مبارزه تمام می*شود، آهنگ دوباره آرام می*شود. این تغییرها بدون ایجاد وقفه، به صورت پویا و بدون دخالت کاربر انجام می*شود. چون براساس DirecMusic، آهنگ به صورت شناور و بدون وقفه با نواختن واریاسیون*های مختلف با قابلیت واکنش به رویدادهای بازی تولید می*شود.
DirectMusic، با داده*های موسیقی براساس پیام*های حاوی اطلا*عات کار می*کند. یک آهنگ می*تواند در داخل سخت*افزار و با نرم*افزارهای آهنگ*ساز مانند Microsoft *Synthesizer ساخته شود. DirectMusic از استانداردهایMIDI و DLS پشتیبانی می*کند.
۶- DirectInput
این کامپوننت، سازوکار مشترکی را برای دسترسی به بسیاری از کنترل*کننده*های بازی مانند دسته بازی، گیم*پد، صفحه کلید و ماوس فراهم می*آورد. مهم*ترین تغییری که هنگام عرضه DirectX۸ در DirectInput ایجاد شد، آمدنaction map بود. action map از توابعی مانند راندن یک وسیله یا شلیک یک گلوله (که به*وسیله دستگاه*های ورودی ایجاد می*شود) استفاده می*کند. زمانی که یک سخت*افزار ورودی مانند دسته بازی را می*خرید، معمولا *ًaction mapنیز برای بسیاری از انواع رایج بازی*ها مانند شبیه*ساز پرواز، تیراندازی اول شخص و بازی*های مسابقه*ای در آن پیاده*سازی شده است.
۷- DirectPlay
این کامپوننت امکان بازی چند نفر را در بازی*های چندنفره فراهم می*آورد، دسترسی به سرویس*های ارتباطی را آسان می*سازد و راهی را برای بازی*ها فراهم می*کند تا مستقل از پروتکل یا نوع سرویس آنلا*ین با یکدیگر در ارتباط باشند. همچنین از پروتکل*های ارتباطی مطمین پشتیبانی*می*کند تا مانع از گم شدن داده*های مهم بازی روی شبکه شود. در واقع DirectPlay به صورت لا*یه*ای است که روی پروتکل*های معمول شبکه مانند IPX ،TCP/IP و … قرار دارد.
در واقع یک session یا جلسه در DirectPlay یک کانال ارتباطی بین چندین کامپیوتر است. یک برنامه کاربردی پیش از آن*که بتواند با سیستم*های دیگر ارتباط برقرار کند، باید در یک Session یا جلسه باشد. هر جلسه تنها یک میزبان دارد و آن برنامه کاربردی*ای است که آن جلسه را ایجاد کرده*است. تنها میزبان می*تواند ویژگی*های یک Session را تغییر دهد.
DirectX ۹.۰
این کامپوننت، آخرین نسخه DirectX تا پیش از عرضه رسمی ویندوز ویستا است. مهم*ترین چیزی که همراه DirectX ۹.۰ عرضه شد، High-Level Shader Language) HLSL) است. زبان HLSL جایگزین زبان اسمبلی برای نوشتن pixel shaderها و vertex shaderها در DirectX است. پیش از ارایه DirectX ۹.۰ توسعه*دهندگان بازی بایدshader*ها را با استفاده از یک زبان اسمبلی سطح پایین توسعه می*دادند. HLSL با فراهم*آوردن یک محیط برنامه*نویسی توسعه*دهنده ساده، توسعه همه بخش*های نرم*افزار مانند انیمیشن و برنامه*نویسی افکت*ها را آسان می*کند.
HLSL با همه پردازشگرهای گرافیکی (GPU) سازگار با DirectX کار می*کند و به توسعه*دهندگان امکان می*دهد افکت*های بصری را روی گستره وسیع*تری از پلتفرم*ها ایجاد کنند؛ بدون این*که نیاز داشته باشند به جزییات سخت*افزار گرافیکی توجه کنند.
DirectX ۹.۰ روی ویندوز ۹۵ نصب نمی*شود. چون بازی*هایی که به DirectX ۹.۰ نیاز دارند، به کامپیوترهای جدیدتر و قوی*تری هم نیاز دارند که ویندوز ۹۸ یا نسخه*های جدیدتر روی آن*ها نصب می*شود. تاکنون نسخه*های a ،b و c از DirectX ۹.۰ ارایه شده است. هر نسخه جدیدتر از DirectX دارای امنیت، کارایی و سیستم رفع خطای بهتری است.
DirectX ۱۰
دوستداران بازی باید خوشحال باشند از این*که بدانند شرکت مایکروسافت DirectX را نیز تولید کرده است و همراه پیش توزیع Direct۳D ۱۰ عرضه خواهد شد. همچنین نرم*افزارMicrosoft Windows Game Explorer نیز عرضه شده* که به برنامه*نویسان و توسعه*دهندگان امکان می*دهد امکانات بروزکردن خودکار (auto-updating) را به بازی*هایشان بیفزایند. مایکروسافت می*خواهد DirectX ۹.۰ و DirectX ۱۰ را روی ویندوز ویستا عرضه کند. به گفته Rodolph Balaz از برنامه*نویسان توسعه**دهنده Direct۳D و OpenGL در مایکروسافت، DirectX ۱۰ تنها با سیستم*عامل*های جدید کار خواهد کرد و در حال حاضر مایکروسافت، برنامه*ای برای پشتیبانی ویندوز اکس*پی از آن ندارد.
تا زمان نوشته شدن این مقاله هنوز نسخه رسمی ویندوز ویستا عرضه نشده است. ولی به نظر می*آید این ویندوز، هم از DirectX ۱۰ و هم از DirectX ۹.۰ پشتیبانی خواهد کرد.
SGL OpenGL
شرکت سیلیکون گرافیکس(SGI ،OpenGL) را با هدف ساخت یک API برای توسعه برنامه*های گرافیکی دوبعدی و سه بعدی عرضه*کرده*است. پیش از ساخته شدن APIهای گرافیکی مانند OpenGL و DirectX، بسیاری از تولیدکنندگان سخت*افزار، کتابخانه*های گرافیکی مختلف و متفاوتی داشتند. به همین دلیل پشتیبانی از نسخه*های مختلف نرم*افزارهایشان روی پلتفرم*های سخت*افزاری مختلف هزینه*بر و انتقال یک برنامه کاربردی از یک پلتفرم سخت*افزاری به پلتفرم سخت*افزاری دیگر بسیار وقت*گیر و سخت بود.
بنابراین SGI نمونه برنامه*ای را تولید کرد که تولیدکنندگان سخت*افزار باید از آن برای توسعه درایورهای OpenGL در سخت*افزارهایشان استفاده کنند. این برنامه به صورت اپن*سورس ارایه شده*است. ولی سازندگان این سخت*افزارها می*توانند قابلیت*های گوناگونی را برپایه OpenGL در سخت*افزارهایشان ایجاد کنند. تصمیم*گیری درباره ایجاد تغییرات در OpenGL را کنسرسیوم ARB اتخاذ می*کند.
این کنسرسیوم شامل اعضای مهمی همچون اپل، اینتل، آی*بی*ام، سان، ATI، دل، nVIDIA، سیلیکون*گرافیکس و۳Dlabs است و از سوی شرکت*های معتبر دیگری مانند متراکس، S۳ ،Xi و Quantum ۳D حمایت می*شود. توسعه*دهندگان نرم*افزار برای استفاده از OpenGL در نرم*افزارهایشان نیازی به اخذ مجوز ندارند. ولی تولیدکنندگان سخت*افزار برای پیاده*سازی سخت*افزاری OpenGL نیازمند اخذ مجوز از SGI هستند.
OpenGL چیست؟
در اوایل پیدایش OpenGL، از این API در کارهای صنعتی، طراحی وسایل داخلی، مکانیکی و نیز در آنالیزهای علمی و آماری استفاده می*شد.
در سال ۱۹۹۶، نویسندگان و توسعه*دهندگان بازی*های کامپیوتری از نسخه ویندوزی OpenGL برای ساخت بازی*های کامپیوتری استفاده کردند. OpenGL برای پشتیبانی از گستره وسیعی از تکنیک*های رندرکردن گرافیکی پیشرفته طراحی شده است که می*توان پاره*ای از آن*ها را به این*صورت نام برد:
نورپردازی: قابلیت تحلیل میزان رنگ هنگام تابش مدل*های متفاوت نور به یک سطح از یک یا چند منبع نور مختلف.
سایه*سازی نرم: قابلیت تحلیل افکت*های سایه هنگام تابش نور به یک زاویه و ایجاد اختلا*ف نور خفیف در مقابل آن سطح (مانند نور کمی که هنگام تابش آفتاب به یک صخره یخی در اطراف آن ایجاد می*شود).
حرکت محو ومدل*سازی: توانایی تغییر مکان و اندازه پرسپکتیو یک شی در فضای سه بعدی.
مجموعه امکانات OpenGL شبیه Direct۳D است. ولی API سطح پایین*تر آن (نزدیک*تر به سطح سخت*افزار) باعث می*شود کنترل خوبی روی عناصر اصلی ایجاد صحنه*های سه بعدی مانند اطلا*عات سه*ضلعی*ها که سلول*های تشکیل*دهنده یک مدل سه بعدی هستند داشته باشد.
دو سطح پشتیبانی از شتاب*دهندگی سخت*افزاری برای OpenGL وجود دارد: installing client driver) ICDs) که به نوردهی ایجاد تغییر و رسترکردن (تبدیل یک فریم سه بعدی چند ضلعی ذخیره شده درframe buffer به یک تصویر کامل با بافت*ها و نشانه*های عمق و نور) شتاب می*دهد و mini client server) MCs) که از رسترکردن پشتیبانی می*کند.
OpenGL ۱.۴ و OpenGL ۱.۵ به*ترتیب در تابستان ۲۰۰۲ و ۲۰۰۳ معرفی شدند که هر یک امکانات و کاربردهای بیشتری از نسخه*های پیش از خود داشتند. بزرگ*ترین آن*ها OpenGL Shading Language بود؛ زبانی ویژه برنامه*نویسی vertex-shader و pixel-shader که در صورت نیاز به OpenGL الصاق می*شد. OpenGLShading Language زبانی شد که به سرعت در سطح گسترده*ای مورد پشتیبانی یونیکس، ویندوز، لینوکس و دیگر سیستم*عامل*ها برای توسعه*دهنده گرافیک*های تعاملی و برنامه*های کاربردی ترسیمی قرار گرفت.
OpenGL ۲.۰
OpenGL ۲.۰ آخرین نسخه عرضه شده تا اوایل سال ۲۰۰۶ میلا*دی است. OpenGL Shader Language همراه با این نسخه عرضه شده و بر پایه استاندارد ANSYC طراحی شده است. برخی قابلیت*های تازه این نسخه عبارتند از:
- سایه*زنی قابل برنامه*ریزی به*وسیله OpenGL Shader Language و APIهای آن. قدرت ایجاد Shader و برنامه*نویسی اشیا، بخش دیگری از تغییرات ایجاد شده در این نسخه است.
- رندر چندگانه که به shaderهای قابل برنامه*نویسی امکان می*دهد در بافرهای خروجی چندگانه در یک گذر مقادیر مختلفی بنویسند.
- بافت*های دو طرفه، با قابلیت تعریف کاربرد آن بافت برای سطح جلو و پشت یک مدل اولیه که کیفیت حجم سایه و کارایی الگویم*های رندر هندسی اشیای سخت را ارتقا می*دهد.
- Spriteهای نقطه که مختصات بافت یک نقطه را با مختصات بافت قرار داده شده در مقابل آن نقطه جابه*جا می*کنند و رسم نقاط را در بافت*های طراحی شده در کامپیوترهای معمولی نیز ممکن می*سازند.
- بافت*های Non-power-of-two که برای همه انواع بافت* کاربرد دارد که در نتیجه از بافت*های چهارگوش پشتیبانی می*نماید و درعمل حافظه کمتری اشغال می*کند.
OpenAL
OpenAL، یک API دیگر است که برای ایجاد و مدیریت صداهای سه بعدی در بازی*های کامپیوتری و دیگر انواع نرم*افزارها به صورت یک پروژه مشترک میان شرکت Loki Software و Creative ساخته شده است.
کتابخانه این API مجموعه*ای از صداهای قابل حرکت در فضای سه*بعدی را مدل*سازی می*کند. عناصر اصلی OpenAL شامل یک شنونده، یک منبع و یک بافر است. ممکن است تعداد زیادی بافر وجودداشته باشد که شامل داده*های صوتی هستند. هر بافر می*تواند به یک یا چند منبع ضمیمه شود. همیشه یک عنصر شنونده (برای محتوای صوتی) وجود دارد که موقعیت مکانی منبع صوتی که صدای آن شنیده می*شود را نشان می*دهد. OpenAL در موتورهای گرافیکی Epic Games Unreal نیز برای ساخت افکت*های صوتی به کار می*رود.
OpenGL Performer
OpenGL Performer، رابط برنامه*نویسی قدرتمند و کاملی است که توسعه*دهندگان برای شبیه*سازی بصری از آن استفاده می*کنند. ابزارهای موجود در آن، توسعه برنامه*های شبیه*سازی بصری، طراحی بر اساس شبیه*سازی، واقعیت مجازی، نرم*افزارهای علمی، سرگرمی*های تعاملی، برنامه*های ویدیویی و طراحی با کامپیوتر را آسان می*کند. این رابط برنامه*نویسی به برنامه*نویسان امکان می*دهد از قابلیت*های سیستم به صورت بهینه استفاده کنند. آخرین نسخه این نرم*افزار OpenGL Performer ۳.۲ است.
OpenGL Volumizer
OpenGL Volumizer، یک API گرافیکی است که در بخش*های انرژی، تولید، داروسازی و تجارت کاربرد دارد. این API برای انجام کارهای تعاملی با کیفیت بالا* و بصری نمودن و شبیه*سازی یک محیط با استفاده از مجموعه بزرگی از داده*های حجمی (داده*هایی که مختصات یک شی در فضای سه بعدی را نشان می*دهند) طراحی شده است. برای نمونه در نرم*افزارهای پزشکی برای شبیه*سازی وضعیت بخش خاصی از بدن، از این نرم*افزار استفاده می*شود. OpenGL Volumizer آخرین نسخه این API تا اوایل سال ۲۰۰۶ میلا*دی است که بر پایه کتابخانه گرافیکی استانداردOpenGL ساخته شده و شامل رابط کلا*س ++C و قابل*استفاده در سیستم*عامل*های ویندوز و لینوکس ۳۲بیتی و ۶۴*بیتی است.
OpenGL Multipipe SDK
OpenGL Multipipe SDK یک لا*یه API است که مدیریت برنامه*های گرافیکی را در زیر سیستم*ها و ساختارهای گرافیکی چندگانه آسان می*کند. برنامه*های کاربردی نوشته شده برپایه این API به نرمی و روانی، هم روی سیستم*های رومیزی تک پردازنده*ای و هم روی سیستم*های چند پردازنده*ای با سیستم*های گرافیکی قدرتمند اجرا می*شوند.
نتیجه*گیری*
همان*گونه که بیان شد ارتباط بین برنامه*ها و سخت*افزاری که آن*را اجرا می*کند برعهده API است. سازندگان بزرگ نرم*افزار و سخت*افزار API خاصی را برای برنامه*های مالتی*مدیا آماده کرده*اند که مطرح ترین آن*ها DirectX و OpenGL هستند.