آشنایی با DirectX و OpenGL
آشنایی با DirectX و OpenGL
آشنایی با DirectX و OpenGL
یک بازی کامپیوتری را روی کامپیوترتان اجرا میکنید. فعلاً کارت گرافیک شما روی اسلاتAGP سوار میشود، پردازشگر سلرون دارید و … پس از چند ماه یا چند سال کامپیوتر جدیدی میخرید. اکنون اسلات کارت گرافیکی شما PCI Express است و یک پردازشگر ۶۴ بیتی دارید. همان بازی را روی این کامپیوتر هم نصب و اجرامیکنید! شاید به نظر طبیعی میآید که همه چیز باید همینطور باشد. اما چگونه یک بازی روی کامپیوترهایی با تراشهها و سختافزارهای مختلف و گاه فناوری متفاوت اجرا میشود؟ APIهای گرافیکی یا همان رابطهای برنامهنویسی، بخش بزرگی از این مشکل را حل میکنند و امکانات گسترده دیگری را نیز در اختیار برنامهنویسان و توسعهدهندگان بازی و برنامههای چندرسانهای قرارمیدهند. OpenGL وDirectX، دو مجموعه API گرافیکی و صوتی هستند که برای آسانتر ساختن توسعه بازیها و نرمافزارهای چندرسانهای طراحی شدهاند.
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 الگوی یکسانی دارد که عبارت است از:
- ایجاد یک شی
- شروع حلقه
- انتقال به مانتیور
- پایان حلقه
- پاک کردن آن شی
منظور از واژه <یک شی> میتواند هر تصویر دوبعدیای باشد و منظور از حلقه، حلقهای است که در برنامهنویسی هنگام تکرار منظم دستهای از دادهها یا دستورها به کار میبریم. تصویر ایجادشده پس از مدتی پاک میشود و جای خود را به تصویر دیگری میدهد.
Hardware Abstraction Layer) HAL) است.
HAL با قابلیتهایی که به صورت گسترده در سختافزارهای گرافیک سهبعدی پیادهسازی شدهاند ارتباط ایجاد میکند و به سازندگان امکانمیدهد درایورهایی را تولید کنند که لایه HAL را به سختافزار پیوند دهد. این کار باعث میشود برنامههای کاربردی Direct ۳D بدون اینکه برای نوع خاصی از قطعه سختافزاری نوشته شده باشد، از ویژگیهای بخشهای خاص آن قطعه سختافزاری بهرهببرد. در شکل یک چگونگی ارتباط لایه HAL با سختافزار و نرمافزارهای مرتبط نشان داده شده است.
همانگونه که در شکل یک، نشان داده شده، نرمافزار بازی بالاترین سطح است و پس از آن کامپوننتهای ترسیم دوبعدی و سه بعدی، یعنی DirectDraw و Direct۳D قرار دارند. لایه HAL یک رابط میان کامپوننتهای DirectX و کارت گرافیک است.
در سیستم رندر Direct۳D، ساختار اشیای سهبعدی پیش از آنکه شتابدهنده سهبعدی، یک صحنه سهبعدی را رندر نماید و آن را به مانیتور منتقل کند، به وسیله CPU پردازش میشود. نسخه ششم کامپوننت Direct۳D از قابلیتهای کارتهای گرافیک جدیدتر پشتیبانی مینماید و در هر گذر، چندین بافت را با هم رندر میکند.
کاهش زمان رندر به استفاده از نقشه بافتها نیاز دارد. این نسخه تکنیکهایی برای افزودن جلوهای واقعیتر به صحنههای سه بعدی را نیز دربردارد.
مانند anistropic filtering که عنصر عمق را به trilinear filtering و نقشه برجستهسازی میافزاید که موجب ایجاد شباهت بیشتر بافتها و نیز منابع نور تابیده شده بر سطوح مسطح با نمونههای واقعی آنها میشود.
نسخه هفتم DirectX نسبت به نسخههای پیش از خود بیست درصد سریعتر و شامل چند ویژگی دیگر بود. مهمترین آنها پشتیبانی از تغییرات شتاب سختافزاری و نوردهی (T&L) به وسیله اغلب کارتهای گرافیک سهبعدی آنزمان به ویژه کارتهایی است که برپایه تراشههای nVidia Geforce ۲۵۶ و S۳ Savage ۲۰۰۰ ساخته شدهاند. از زمانی که T&L عرضه شد، وقتگیرترین وظیفه CPU هنگام اجرای بازیهای پیشرفته به شتابدهنده سهبعدی داده شد و بخش بزرگی از ظرفیت پردازنده اصلی به کارهای دیگر مانند هوشمصنوعی بازی اختصاص داده شد و توسعهدهندگان بازی توانستند رندر را با جزییات بیشتر انجام دهند و جلوههای ویژه پیچیدهتری را در بازیها بهکار ببرند.
filter شناخته میشوند تقسیم میکند.
فیلترها تعدادی pin ورودی و خروجی دارند که آنها را به هم متصل میکند. طراحی کلی سازوکار اتصال به این صورت است که فیلترها میتوانند به روشهای مختلف به هم متصل شوند که هر نوع از این اتصالها به معنی انجام دادن یک کار است و توسعهدهندگان نرمافزار میتوانند افکتهای خود یا فیلترهای دیگری را به بخشی از این گراف برای انجام کار ویژهای بیفزایند. گراف فیلتر DirectShow به صورت گسترده در ضبط صدا و فیلم، و ویرایش آنها به کار میرود.
در شکل دو، یک گراف نمایش برای فایل فیلمی از نوع MPEG نشان داده شده است. برنامههای کاربردی DirectShow، برای پردازش دادههای مالتیمدیا، از این گراف استفاده میکنند.
دادههای چند رسانهای در این گراف (در حالی که کارها به وسیله برنامه کاربردی کنترل میشوند) از فایل منبع به سمت مقصد که میتواند یک قطعه سختافزاری باشد حرکت میکنند.
ولی در برخی مواقع، برنامه کاربردی علاوه بر کنترل گراف، دریافتکننده یا فرستنده داده نیز هست.
هر گره این گراف، همانگونه که گفته شد، یک فیلتر است و کار ویژه خود را انجام میدهد. فیلتر source، دادهها را از یک فایل یا URL میخواند. فیلتر Parser، بخشهایی از دادههای صوتی و ویدیویی را به رمزگشای مناسب میفرستد. رمزگشاها، دادههای صوتی و ویدیویی را رمزگشایی مینمایند یا از حالت فشردگی خارج میکنند.
فیلتر رندرکننده، دادههای دریافت شده صوتی و ویدیویی از رمزگشا را پخش میکند یا آنها را نمایش میدهد.
برنامههای چندرسانهای با این کامپوننت به سختافزارهای صوتی مانند کارت صوتی دسترسی پیدامیکنند. از مهمترین ویژگیهای این API، ترکیب صدا و کنترل سطح آن است.
DirectSound همچنین اجازه میدهد چندین برنامه کاربردی، بدون پیش آوردن وقفه، همزمان به کارت صوتی دسترسی داشته باشند. ایجاد افکتهای صوتی از دیگر تواناییهای DirectSound است. پس از سالها توسعه، اکنون DirectSound یک API پخته و کامل است و بسیاری قابلیتهای دیگر را نیز فراهم میکند؛ مانند قابلیت پخش صداهای چند کاناله با وضوح و دقت بالا.
این درجه میتواند بسته به نوع عملکرد شخصیت بازی، تغییر کند. اگر شخصیت بازی در حال راه رفتن است، آهنگ آرام و هنگامی که با دشمن خود مبارزه میکند، آهنگ تندتر میشود و یا نوع آهنگ تغییر میکند و هنگامی که مبارزه تمام میشود، آهنگ دوباره آرام میشود. این تغییرها بدون ایجاد وقفه، به صورت پویا و بدون دخالت کاربر انجام میشود. چون براساس DirecMusic، آهنگ به صورت شناور و بدون وقفه با نواختن واریاسیونهای مختلف با قابلیت واکنش به رویدادهای بازی تولید میشود.
DirectMusic، با دادههای موسیقی براساس پیامهای حاوی اطلاعات کار میکند. یک آهنگ میتواند در داخل سختافزار و با نرمافزارهای آهنگساز مانند Microsoft Synthesizer ساخته شود. DirectMusic از استانداردهایMIDI و DLS پشتیبانی میکند.
در واقع یک session یا جلسه در DirectPlay یک کانال ارتباطی بین چندین کامپیوتر است. یک برنامه کاربردی پیش از آنکه بتواند با سیستمهای دیگر ارتباط برقرار کند، باید در یک Session یا جلسه باشد. هر جلسه تنها یک میزبان دارد و آن برنامه کاربردیای است که آن جلسه را ایجاد کردهاست. تنها میزبان میتواند ویژگیهای یک Session را تغییر دهد.
HLSL با همه پردازشگرهای گرافیکی (GPU) سازگار با DirectX کار میکند و به توسعهدهندگان امکان میدهد افکتهای بصری را روی گستره وسیعتری از پلتفرمها ایجاد کنند؛ بدون اینکه نیاز داشته باشند به جزییات سختافزار گرافیکی توجه کنند.
DirectX ۹.۰ روی ویندوز ۹۵ نصب نمیشود. چون بازیهایی که به DirectX ۹.۰ نیاز دارند، به کامپیوترهای جدیدتر و قویتری هم نیاز دارند که ویندوز ۹۸ یا نسخههای جدیدتر روی آنها نصب میشود. تاکنون نسخههای a ،b و c از DirectX ۹.۰ ارایه شده است. هر نسخه جدیدتر از DirectX دارای امنیت، کارایی و سیستم رفع خطای بهتری است.
تا زمان نوشته شدن این مقاله هنوز نسخه رسمی ویندوز ویستا عرضه نشده است. ولی به نظر میآید این ویندوز، هم از DirectX ۱۰ و هم از DirectX ۹.۰ پشتیبانی خواهد کرد.
بنابراین SGI نمونه برنامهای را تولید کرد که تولیدکنندگان سختافزار باید از آن برای توسعه درایورهای OpenGL در سختافزارهایشان استفاده کنند. این برنامه به صورت اپنسورس ارایه شدهاست. ولی سازندگان این سختافزارها میتوانند قابلیتهای گوناگونی را برپایه OpenGL در سختافزارهایشان ایجاد کنند. تصمیمگیری درباره ایجاد تغییرات در OpenGL را کنسرسیوم ARB اتخاذ میکند.
این کنسرسیوم شامل اعضای مهمی همچون اپل، اینتل، آیبیام، سان، ATI، دل، nVIDIA، سیلیکونگرافیکس و۳Dlabs است و از سوی شرکتهای معتبر دیگری مانند متراکس، S۳ ،Xi و Quantum ۳D حمایت میشود. توسعهدهندگان نرمافزار برای استفاده از OpenGL در نرمافزارهایشان نیازی به اخذ مجوز ندارند. ولی تولیدکنندگان سختافزار برای پیادهسازی سختافزاری OpenGL نیازمند اخذ مجوز از SGI هستند.
در سال ۱۹۹۶، نویسندگان و توسعهدهندگان بازیهای کامپیوتری از نسخه ویندوزی 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 Shader Language و APIهای آن. قدرت ایجاد Shader و برنامهنویسی اشیا، بخش دیگری از تغییرات ایجاد شده در این نسخه است.
- رندر چندگانه که به shaderهای قابل برنامهنویسی امکان میدهد در بافرهای خروجی چندگانه در یک گذر مقادیر مختلفی بنویسند.
- بافتهای دو طرفه، با قابلیت تعریف کاربرد آن بافت برای سطح جلو و پشت یک مدل اولیه که کیفیت حجم سایه و کارایی الگویمهای رندر هندسی اشیای سخت را ارتقا میدهد.
- Spriteهای نقطه که مختصات بافت یک نقطه را با مختصات بافت قرار داده شده در مقابل آن نقطه جابهجا میکنند و رسم نقاط را در بافتهای طراحی شده در کامپیوترهای معمولی نیز ممکن میسازند.
- بافتهای Non-power-of-two که برای همه انواع بافت کاربرد دارد که در نتیجه از بافتهای چهارگوش پشتیبانی مینماید و درعمل حافظه کمتری اشغال میکند.
کتابخانه این API مجموعهای از صداهای قابل حرکت در فضای سهبعدی را مدلسازی میکند. عناصر اصلی OpenAL شامل یک شنونده، یک منبع و یک بافر است. ممکن است تعداد زیادی بافر وجودداشته باشد که شامل دادههای صوتی هستند. هر بافر میتواند به یک یا چند منبع ضمیمه شود. همیشه یک عنصر شنونده (برای محتوای صوتی) وجود دارد که موقعیت مکانی منبع صوتی که صدای آن شنیده میشود را نشان میدهد. OpenAL در موتورهای گرافیکی Epic Games Unreal نیز برای ساخت افکتهای صوتی به کار میرود.
منبع:http://www.academist.ir
/خ
API گرافیکی چیست؟
Microsoft 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 الگوی یکسانی دارد که عبارت است از:
- ایجاد یک شی
- شروع حلقه
- انتقال به مانتیور
- پایان حلقه
- پاک کردن آن شی
منظور از واژه <یک شی> میتواند هر تصویر دوبعدیای باشد و منظور از حلقه، حلقهای است که در برنامهنویسی هنگام تکرار منظم دستهای از دادهها یا دستورها به کار میبریم. تصویر ایجادشده پس از مدتی پاک میشود و جای خود را به تصویر دیگری میدهد.
۲- Direct۳D
Hardware Abstraction Layer) HAL) است.
HAL با قابلیتهایی که به صورت گسترده در سختافزارهای گرافیک سهبعدی پیادهسازی شدهاند ارتباط ایجاد میکند و به سازندگان امکانمیدهد درایورهایی را تولید کنند که لایه HAL را به سختافزار پیوند دهد. این کار باعث میشود برنامههای کاربردی Direct ۳D بدون اینکه برای نوع خاصی از قطعه سختافزاری نوشته شده باشد، از ویژگیهای بخشهای خاص آن قطعه سختافزاری بهرهببرد. در شکل یک چگونگی ارتباط لایه HAL با سختافزار و نرمافزارهای مرتبط نشان داده شده است.
همانگونه که در شکل یک، نشان داده شده، نرمافزار بازی بالاترین سطح است و پس از آن کامپوننتهای ترسیم دوبعدی و سه بعدی، یعنی DirectDraw و Direct۳D قرار دارند. لایه HAL یک رابط میان کامپوننتهای DirectX و کارت گرافیک است.
در سیستم رندر Direct۳D، ساختار اشیای سهبعدی پیش از آنکه شتابدهنده سهبعدی، یک صحنه سهبعدی را رندر نماید و آن را به مانیتور منتقل کند، به وسیله CPU پردازش میشود. نسخه ششم کامپوننت Direct۳D از قابلیتهای کارتهای گرافیک جدیدتر پشتیبانی مینماید و در هر گذر، چندین بافت را با هم رندر میکند.
کاهش زمان رندر به استفاده از نقشه بافتها نیاز دارد. این نسخه تکنیکهایی برای افزودن جلوهای واقعیتر به صحنههای سه بعدی را نیز دربردارد.
مانند anistropic filtering که عنصر عمق را به trilinear filtering و نقشه برجستهسازی میافزاید که موجب ایجاد شباهت بیشتر بافتها و نیز منابع نور تابیده شده بر سطوح مسطح با نمونههای واقعی آنها میشود.
نسخه هفتم DirectX نسبت به نسخههای پیش از خود بیست درصد سریعتر و شامل چند ویژگی دیگر بود. مهمترین آنها پشتیبانی از تغییرات شتاب سختافزاری و نوردهی (T&L) به وسیله اغلب کارتهای گرافیک سهبعدی آنزمان به ویژه کارتهایی است که برپایه تراشههای nVidia Geforce ۲۵۶ و S۳ Savage ۲۰۰۰ ساخته شدهاند. از زمانی که T&L عرضه شد، وقتگیرترین وظیفه CPU هنگام اجرای بازیهای پیشرفته به شتابدهنده سهبعدی داده شد و بخش بزرگی از ظرفیت پردازنده اصلی به کارهای دیگر مانند هوشمصنوعی بازی اختصاص داده شد و توسعهدهندگان بازی توانستند رندر را با جزییات بیشتر انجام دهند و جلوههای ویژه پیچیدهتری را در بازیها بهکار ببرند.
۳- DirectShow
filter شناخته میشوند تقسیم میکند.
فیلترها تعدادی pin ورودی و خروجی دارند که آنها را به هم متصل میکند. طراحی کلی سازوکار اتصال به این صورت است که فیلترها میتوانند به روشهای مختلف به هم متصل شوند که هر نوع از این اتصالها به معنی انجام دادن یک کار است و توسعهدهندگان نرمافزار میتوانند افکتهای خود یا فیلترهای دیگری را به بخشی از این گراف برای انجام کار ویژهای بیفزایند. گراف فیلتر DirectShow به صورت گسترده در ضبط صدا و فیلم، و ویرایش آنها به کار میرود.
در شکل دو، یک گراف نمایش برای فایل فیلمی از نوع MPEG نشان داده شده است. برنامههای کاربردی DirectShow، برای پردازش دادههای مالتیمدیا، از این گراف استفاده میکنند.
دادههای چند رسانهای در این گراف (در حالی که کارها به وسیله برنامه کاربردی کنترل میشوند) از فایل منبع به سمت مقصد که میتواند یک قطعه سختافزاری باشد حرکت میکنند.
ولی در برخی مواقع، برنامه کاربردی علاوه بر کنترل گراف، دریافتکننده یا فرستنده داده نیز هست.
هر گره این گراف، همانگونه که گفته شد، یک فیلتر است و کار ویژه خود را انجام میدهد. فیلتر source، دادهها را از یک فایل یا URL میخواند. فیلتر Parser، بخشهایی از دادههای صوتی و ویدیویی را به رمزگشای مناسب میفرستد. رمزگشاها، دادههای صوتی و ویدیویی را رمزگشایی مینمایند یا از حالت فشردگی خارج میکنند.
فیلتر رندرکننده، دادههای دریافت شده صوتی و ویدیویی از رمزگشا را پخش میکند یا آنها را نمایش میدهد.
۴- DirectSound
برنامههای چندرسانهای با این کامپوننت به سختافزارهای صوتی مانند کارت صوتی دسترسی پیدامیکنند. از مهمترین ویژگیهای این API، ترکیب صدا و کنترل سطح آن است.
DirectSound همچنین اجازه میدهد چندین برنامه کاربردی، بدون پیش آوردن وقفه، همزمان به کارت صوتی دسترسی داشته باشند. ایجاد افکتهای صوتی از دیگر تواناییهای DirectSound است. پس از سالها توسعه، اکنون DirectSound یک API پخته و کامل است و بسیاری قابلیتهای دیگر را نیز فراهم میکند؛ مانند قابلیت پخش صداهای چند کاناله با وضوح و دقت بالا.
۵- DirectMusic
این درجه میتواند بسته به نوع عملکرد شخصیت بازی، تغییر کند. اگر شخصیت بازی در حال راه رفتن است، آهنگ آرام و هنگامی که با دشمن خود مبارزه میکند، آهنگ تندتر میشود و یا نوع آهنگ تغییر میکند و هنگامی که مبارزه تمام میشود، آهنگ دوباره آرام میشود. این تغییرها بدون ایجاد وقفه، به صورت پویا و بدون دخالت کاربر انجام میشود. چون براساس DirecMusic، آهنگ به صورت شناور و بدون وقفه با نواختن واریاسیونهای مختلف با قابلیت واکنش به رویدادهای بازی تولید میشود.
DirectMusic، با دادههای موسیقی براساس پیامهای حاوی اطلاعات کار میکند. یک آهنگ میتواند در داخل سختافزار و با نرمافزارهای آهنگساز مانند Microsoft Synthesizer ساخته شود. DirectMusic از استانداردهایMIDI و DLS پشتیبانی میکند.
۶- DirectInput
۷- DirectPlay
در واقع یک session یا جلسه در DirectPlay یک کانال ارتباطی بین چندین کامپیوتر است. یک برنامه کاربردی پیش از آنکه بتواند با سیستمهای دیگر ارتباط برقرار کند، باید در یک Session یا جلسه باشد. هر جلسه تنها یک میزبان دارد و آن برنامه کاربردیای است که آن جلسه را ایجاد کردهاست. تنها میزبان میتواند ویژگیهای یک Session را تغییر دهد.
DirectX ۹.۰
HLSL با همه پردازشگرهای گرافیکی (GPU) سازگار با DirectX کار میکند و به توسعهدهندگان امکان میدهد افکتهای بصری را روی گستره وسیعتری از پلتفرمها ایجاد کنند؛ بدون اینکه نیاز داشته باشند به جزییات سختافزار گرافیکی توجه کنند.
DirectX ۹.۰ روی ویندوز ۹۵ نصب نمیشود. چون بازیهایی که به DirectX ۹.۰ نیاز دارند، به کامپیوترهای جدیدتر و قویتری هم نیاز دارند که ویندوز ۹۸ یا نسخههای جدیدتر روی آنها نصب میشود. تاکنون نسخههای a ،b و c از DirectX ۹.۰ ارایه شده است. هر نسخه جدیدتر از DirectX دارای امنیت، کارایی و سیستم رفع خطای بهتری است.
DirectX ۱۰
تا زمان نوشته شدن این مقاله هنوز نسخه رسمی ویندوز ویستا عرضه نشده است. ولی به نظر میآید این ویندوز، هم از DirectX ۱۰ و هم از DirectX ۹.۰ پشتیبانی خواهد کرد.
SGL OpenGL
بنابراین SGI نمونه برنامهای را تولید کرد که تولیدکنندگان سختافزار باید از آن برای توسعه درایورهای OpenGL در سختافزارهایشان استفاده کنند. این برنامه به صورت اپنسورس ارایه شدهاست. ولی سازندگان این سختافزارها میتوانند قابلیتهای گوناگونی را برپایه OpenGL در سختافزارهایشان ایجاد کنند. تصمیمگیری درباره ایجاد تغییرات در OpenGL را کنسرسیوم ARB اتخاذ میکند.
این کنسرسیوم شامل اعضای مهمی همچون اپل، اینتل، آیبیام، سان، ATI، دل، nVIDIA، سیلیکونگرافیکس و۳Dlabs است و از سوی شرکتهای معتبر دیگری مانند متراکس، S۳ ،Xi و Quantum ۳D حمایت میشود. توسعهدهندگان نرمافزار برای استفاده از OpenGL در نرمافزارهایشان نیازی به اخذ مجوز ندارند. ولی تولیدکنندگان سختافزار برای پیادهسازی سختافزاری OpenGL نیازمند اخذ مجوز از SGI هستند.
OpenGL چیست؟
در سال ۱۹۹۶، نویسندگان و توسعهدهندگان بازیهای کامپیوتری از نسخه ویندوزی 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 Shader Language و APIهای آن. قدرت ایجاد Shader و برنامهنویسی اشیا، بخش دیگری از تغییرات ایجاد شده در این نسخه است.
- رندر چندگانه که به shaderهای قابل برنامهنویسی امکان میدهد در بافرهای خروجی چندگانه در یک گذر مقادیر مختلفی بنویسند.
- بافتهای دو طرفه، با قابلیت تعریف کاربرد آن بافت برای سطح جلو و پشت یک مدل اولیه که کیفیت حجم سایه و کارایی الگویمهای رندر هندسی اشیای سخت را ارتقا میدهد.
- Spriteهای نقطه که مختصات بافت یک نقطه را با مختصات بافت قرار داده شده در مقابل آن نقطه جابهجا میکنند و رسم نقاط را در بافتهای طراحی شده در کامپیوترهای معمولی نیز ممکن میسازند.
- بافتهای Non-power-of-two که برای همه انواع بافت کاربرد دارد که در نتیجه از بافتهای چهارگوش پشتیبانی مینماید و درعمل حافظه کمتری اشغال میکند.
OpenAL
کتابخانه این API مجموعهای از صداهای قابل حرکت در فضای سهبعدی را مدلسازی میکند. عناصر اصلی OpenAL شامل یک شنونده، یک منبع و یک بافر است. ممکن است تعداد زیادی بافر وجودداشته باشد که شامل دادههای صوتی هستند. هر بافر میتواند به یک یا چند منبع ضمیمه شود. همیشه یک عنصر شنونده (برای محتوای صوتی) وجود دارد که موقعیت مکانی منبع صوتی که صدای آن شنیده میشود را نشان میدهد. OpenAL در موتورهای گرافیکی Epic Games Unreal نیز برای ساخت افکتهای صوتی به کار میرود.
OpenGL Performer
OpenGL Volumizer
OpenGL Multipipe SDK
نتیجهگیری
منبع:http://www.academist.ir
/خ
مقالات مرتبط
تازه های مقالات
ارسال نظر
در ارسال نظر شما خطایی رخ داده است
کاربر گرامی، ضمن تشکر از شما نظر شما با موفقیت ثبت گردید. و پس از تائید در فهرست نظرات نمایش داده می شود
نام :
ایمیل :
نظرات کاربران
{{Fullname}} {{Creationdate}}
{{Body}}