Matrix
07-12-2007, 11:09
اشاره :
يك بازي كامپيوتري را روي كامپيوترتان اجرا ميكنيد. ?علاً كارت گرا?يك شما روي اسلاتAGP سوار ميشود، پردازشگر سلرون داريد و ... پس از چند ماه يا چند سال كامپيوتر جديدي ميخريد. اكنون اسلات كارت گرا?يكي شما PCI Express است و يك پردازشگر 64 بيتي داريد. همان بازي را روي اين كامپيوتر هم نصب و اجراميكنيد! شايد به نظر طبيعي ميآيد كه همه چيز بايد همينطور باشد. اما چگونه يك بازي روي كامپيوترهايي با تراشهها و سختا?زارهاي مختل? و گاه ?ناوري مت?اوت اجرا ميشود؟ APIهاي گرا?يكي يا همان رابطهاي برنامهنويسي، بخش بزرگي از اين مشكل را حل ميكنند و امكانات گسترده ديگري را نيز در اختيار برنامهنويسان و توسعهدهندگان بازي و برنامههاي چندرسانهاي قرارميدهند. OpenGL وDirectX، دو مجموعه API گرا?يكي و صوتي هستند كه براي آسانتر ساختن توسعه بازيها و نرما?زارهاي چندرسانهاي طراحي شدهاند.
API گرا?يكي چيست؟
API درواقع بين برنامه و سختا?زاري كه برنامه روي آن اجرا ميشود، نقش يك هماهنگكننده را دارد و مانند پلي ميان سختا?زار و نرما?زار ارتباط ايجادميكند. يعني برنامهنويس كدهايي مينويسد كه دادههاي گرا?يكي خود را به وسيله دستورهاي استانداردي به درايور API مي?رستد نه مستقيماً به خود سختا?زار. سپس درايوري كه شركت سازنده سختا?زار توليدكرده است، اين كداستاندارد توليدشده را به ?رمت بومي و ويژهاي كه براي آن مدل خاص سختا?زار قابل شناسايي است، ترجمه ميكند.
Microsoft DirectX
شركت مايكروسا?ت در سال 1995 DirectX را ساخته و توسعه دادهاست. اين نرما?زار شامل مجموعه يكپارچهاي از ابزارهاي برنامهنويسي است كه به توسعهدهندگان امكان ميدهد انواع مختل? نرما?زارهاي مالتيمديا را روي پلت?رم ويندوز توليد كنند. DirectX به برنامهاي كه بر پايه آن طراحي شده امكان ميدهد به آساني قابليتهاي سختا?زار كامپيوتر را شناسايي كند و پارامترهاي برنامه را با آن هماهنگ سازد.
DirectX شامل APIهايي است كه دسترسي به بخشهاي ويژهاي از سختا?زار مانند تراشههاي شتابدهنده گرا?يك سهبعدي و كارت صوتي را ميسرميكند. اين APIها كنترل توابع سطح پايين، يعني نزديك به سختا?زار، شامل شتابدهنده گرا?يكي دو بعدي، پشتيباني از دستگاههاي ورودي مانند دسته بازي، ص?حهكليد و ماوس، و كنترل ميكس و خروجي صدا را انجام ميدهند.
DirectX 7.0 در سال 1999 با شش كامپوننت عرضه شد كه عبارت بودند از: Direct3D،DirectDraw ،DirectSound ،DirectPlay ،DirectInput و DirectMusic.
در اواخر سال 2000 ميلادي، DirectX 8.0 عرضه شد كه در آن كامپوننتهاي DirectSound و DirectMusic با هم ادغام شدند و با نام كامپوننت Direct Audio معر?ي شدند.
Direct3D و DirectDraw نيز با هم ادغام شدند و يك كامپوننت با نام DirectX Graphics را ساختند. DirectShow نيز به صورت يك API جداگانه پيادهسازي شد و به يكي از كامپوننتهاي DirectX تبديل گرديد.
DirectX 9.0 در ژانويه سال 2003 عرضه شد. ويژگيهاي خاص اين نسخه عبارتند از:
- قابليتهاي صوتي جديد در DirectSound
- سختا?زار رندركننده ويديويي با شتاب بيشتر
- بهبود قابليت برنامهريزي گرا?يكي
APIهاي همه كامپوننتهاي DirectX برپايه COM يا Component Object Model هستند. در ادامه به بررسي ه?ت كامپوننت DirectX 9.0 ميپردازيم كه عبارتند از: DirectDraw ،Direct3D ،DirectShow ،DirectSound ،DirectMusic ،DirectInput و DirectPlay.
1- DirectDraw
DirectDraw، كامپوننتي ويژه طراحي دوبعدي است كه به برنامهنويس اجازه ميدهد مستقيماً به حا?ظه كارت گرا?يك دسترسي يابد، صحنهها و ?ريمها را با هم تركيب نمايد يا bitmapها را در آنجا ذخيره كند. همچنين، براي برنامهها امكان دسترسي به سختا?زارهاي ويژه نمايش را مستقل از نوع سختا?زار ?راهم ميكند.
هر برنامه كاربردي DirectDraw الگوي يكساني دارد كه عبارت است از:
- ايجاد يك شي
- شروع حلقه
- انتقال به مانتيور
- پايان حلقه
- پاك كردن آن شي
منظور از واژه <يك شي> ميتواند هر تصوير دوبعدياي باشد و منظور از حلقه، حلقهاي است كه در برنامهنويسي هنگام تكرار منظم دستهاي از دادهها يا دستورها به كار ميبريم. تصوير ايجادشده پس از مدتي پاك ميشود و جاي خود را به تصوير ديگري ميدهد.
2- Direct3D
اين كامپوننت، دسترسي به توابع رندركننده گرا?يك سهبعدي تعبيه شده در بيشتر كارتهاي گرا?يك را ?راهم ميكند. Direct3D يك API سطح پايين سهبعدي است كه به نرما?زار امكان ميدهد مستقل از سختا?زار، با سختا?زار شتابدهنده ارتباط برقرار كند. لايهاي كه براي توسعهدهندگان بازي و گرا?يك كامپيوتري امكان طراحي و ساخت بازيها را مستقل از سختا?زار كامپيوترها ?راهم ميكند، لايهاي به نام
Hardware Abstraction Layer) HAL) است.
HAL با قابليتهايي كه به صورت گسترده در سختا?زارهاي گرا?يك سهبعدي پيادهسازي شدهاند ارتباط ايجاد ميكند و به سازندگان امكانميدهد درايورهايي را توليد كنند كه لايه HAL را به سختا?زار پيوند دهد. اين كار باعث ميشود برنامههاي كاربردي Direct 3D بدون اينكه براي نوع خاصي از قطعه سختا?زاري نوشته شده باشد، از ويژگيهاي بخشهاي خاص آن قطعه سختا?زاري بهرهببرد. در شكل يك چگونگي ارتباط لايه HAL با سختا?زار و نرما?زارهاي مرتبط نشان داده شده است.
شكل - چگونگي ارتباط لايه HAL با كارت گرا?يك و نرما?زارهاي مرتبط
http://www.shabakeh-mag.com/Data/Gallery/s63_gpl_1_s.jpg
همانگونه كه در شكل يك، نشان داده شده، نرما?زار بازي بالاترين سطح است و پس از آن كامپوننتهاي ترسيم دوبعدي و سه بعدي، يعني DirectDraw و Direct3D قرار دارند. لايه HAL يك رابط ميان كامپوننتهاي DirectX و كارت گرا?يك است.
در سيستم رندر Direct3D، ساختار اشياي سهبعدي پيش از آنكه شتابدهنده سهبعدي، يك صحنه سهبعدي را رندر نمايد و آن را به مانيتور منتقل كند، به وسيله CPU پردازش ميشود. نسخه ششم كامپوننت Direct3D از قابليتهاي كارتهاي گرا?يك جديدتر پشتيباني مينمايد و در هر گذر، چندين با?ت را با هم رندر ميكند.
كاهش زمان رندر به است?اده از نقشه با?تها نياز دارد. اين نسخه تكنيكهايي براي ا?زودن جلوهاي واقعيتر به صحنههاي سه بعدي را نيز دربردارد.
مانند anistropic filtering كه عنصر عمق را به trilinear filtering و نقشه برجستهسازي ميا?زايد كه موجب ايجاد شباهت بيشتر با?تها و نيز منابع نور تابيده شده بر سطوح مسطح با نمونههاي واقعي آنها ميشود.
نسخه ه?تم DirectX نسبت به نسخههاي پيش از خود بيست درصد سريعتر و شامل چند ويژگي ديگر بود. مهمترين آنها پشتيباني از تغييرات شتاب سختا?زاري و نوردهي (T&L) به وسيله اغلب كارتهاي گرا?يك سهبعدي آنزمان به ويژه كارتهايي است كه برپايه تراشههاي nVidia Geforce 256 و S3 Savage 2000 ساخته شدهاند. از زماني كه T&L عرضه شد، وقتگيرترين وظي?ه CPU هنگام اجراي بازيهاي پيشر?ته به شتابدهنده سهبعدي داده شد و بخش بزرگي از ظر?يت پردازنده اصلي به كارهاي ديگر مانند هوشمصنوعي بازي اختصاص داده شد و توسعهدهندگان بازي توانستند رندر را با جزئيات بيشتر انجام دهند و جلوههاي ويژه پيچيدهتري را در بازيها بهكار ببرند.
3- DirectShow
اين كامپوننت از بسياري از ?رمتهاي صوتي و ويديويي شامل AVI ،MPEG ،ASF ،WMA/WMV ،DV و MP3 و DirectX پشتيباني ميكند و روي ويندوزهاي 98، 2000، اكسپي و نرما?زار اينترنت اكسپلورر عرضه شده است.DirectShow پروسه كارهاي مالتيمديا مانند نمايش ?ايل ويديويي را به مجموعهاي از مراحل كه با نام
filter شناخته ميشوند تقسيم ميكند.
?يلترها تعدادي pin ورودي و خروجي دارند كه آنها را به هم متصل ميكند. طراحي كلي سازوكار اتصال به اين صورت است كه ?يلترها ميتوانند به روشهاي مختل? به هم متصل شوند كه هر نوع از اين اتصالها به معني انجام دادن يك كار است و توسعهدهندگان نرما?زار ميتوانند ا?كتهاي خود يا ?يلترهاي ديگري را به بخشي از اين گرا? براي انجام كار ويژهاي بي?زايند. گرا? ?يلتر DirectShow به صورت گسترده در ضبط صدا و ?يلم، و ويرايش آنها به كار ميرود.
شكل - يك گرا? ?يلتر كه كار نمايش يك ?ايل MPEG را نشان ميدهد.
در شكل دو، يك گرا? نمايش براي ?ايل ?يلمي از نوع MPEG نشان داده شده است. برنامههاي كاربردي DirectShow، براي پردازش دادههاي مالتيمديا، از اين گرا? است?اده ميكنند.
دادههاي چند رسانهاي در اين گرا? (در حالي كه كارها به وسيله برنامه كاربردي كنترل ميشوند) از ?ايل منبع به سمت مقصد كه ميتواند يك قطعه سختا?زاري باشد حركت ميكنند.
ولي در برخي مواقع، برنامه كاربردي علاوه بر كنترل گرا?، دريا?تكننده يا ?رستنده داده نيز هست.
هر گره اين گرا?، همانگونه كه گ?ته شد، يك ?يلتر است و كار ويژه خود را انجام ميدهد. ?يلتر source، دادهها را از يك ?ايل يا URL ميخواند. ?يلتر Parser، بخشهايي از دادههاي صوتي و ويديويي را به رمزگشاي مناسب مي?رستد. رمزگشاها، دادههاي صوتي و ويديويي را رمزگشايي مينمايند يا از حالت ?شردگي خارج ميكنند.
?يلتر رندركننده، دادههاي دريا?ت شده صوتي و ويديويي از رمزگشا را پخش ميكند يا آنها را نمايش ميدهد.
4- DirectSound
اين كامپوننت همزمان با ساخت ويندوز 95، زماني كه درايورهاي صوتي از نوع VXD بودند به DirectX ا?زوده شد. در اين كامپوننت APIهاي ويژهاي ايجاد شد كه نويسندگان درايورهاي صوتي ميبايست آنها را به محصولات خود، كه ?رمت VXD داشت، ميا?زودند تا به درستي با DirectSound كار كند.
برنامههاي چندرسانهاي با اين كامپوننت به سختا?زارهاي صوتي مانند كارت صوتي دسترسي پيداميكنند. از مهمترين ويژگيهاي اين API، تركيب صدا و كنترل سطح آن است.
DirectSound همچنين اجازه ميدهد چندين برنامه كاربردي، بدون پيش آوردن وق?ه، همزمان به كارت صوتي دسترسي داشته باشند. ايجاد ا?كتهاي صوتي از ديگر تواناييهاي DirectSound است. پس از سالها توسعه، اكنون DirectSound يك API پخته و كامل است و بسياري قابليتهاي ديگر را نيز ?راهم ميكند؛ مانند قابليت پخش صداهاي چند كاناله با وضوح و دقت بالا.
5- DirectMusic
تاكنون بازيهايي را تجربه كردهايد كه در تمام مدت يك مرحله، موسيقي يكنواخت و ثابتي دارند؟ بازياي را در نظر بگيريد كه برنامهنويسان آن ميخواهند يك آهنگ، در تمام مدت، در يك مرحله از آن به صدا دربيايد. با است?اده از برنامه DirectMusic Producer، آنها ميتوانند در آن مرحله براي آهنگ، يك درجه در نظر بگيرند.
اين درجه ميتواند بسته به نوع عملكرد شخصيت بازي، تغيير كند. اگر شخصيت بازي در حال راه ر?تن است، آهنگ آرام و هنگامي كه با دشمن خود مبارزه ميكند، آهنگ تندتر ميشود و يا نوع آهنگ تغيير ميكند و هنگامي كه مبارزه تمام ميشود، آهنگ دوباره آرام ميشود. اين تغييرها بدون ايجاد وق?ه، به صورت پويا و بدون دخالت كاربر انجام ميشود. چون براساس DirecMusic، آهنگ به صورت شناور و بدون وق?ه با نواختن وارياسيونهاي مختل? با قابليت واكنش به رويدادهاي بازي توليد ميشود.
DirectMusic، با دادههاي موسيقي براساس پيامهاي حاوي اطلاعات كار ميكند. يك آهنگ ميتواند در داخل سختا?زار و با نرما?زارهاي آهنگساز مانند Microsoft Synthesizer ساخته شود. DirectMusic از استانداردهايMIDI و DLS پشتيباني ميكند.
6- DirectInput
اين كامپوننت، سازوكار مشتركي را براي دسترسي به بسياري از كنترلكنندههاي بازي مانند دسته بازي، گيمپد، ص?حه كليد و ماوس ?راهم ميآورد. مهمترين تغييري كه هنگام عرضه DirectX8 در DirectInput ايجاد شد، آمدنaction map بود. action map از توابعي مانند راندن يك وسيله يا شليك يك گلوله (كه بهوسيله دستگاههاي ورودي ايجاد ميشود) است?اده ميكند. زماني كه يك سختا?زار ورودي مانند دسته بازي را ميخريد، معمولا ًaction mapنيز براي بسياري از انواع رايج بازيها مانند شبيهساز پرواز، تيراندازي اول شخص و بازيهاي مسابقهاي در آن پيادهسازي شده است.
7- DirectPlay
اين كامپوننت امكان بازي چند ن?ر را در بازيهاي چندن?ره ?راهم ميآورد، دسترسي به سرويسهاي ارتباطي را آسان ميسازد و راهي را براي بازيها ?راهم ميكند تا مستقل از پروتكل يا نوع سرويس آنلاين با يكديگر در ارتباط باشند. همچنين از پروتكلهاي ارتباطي مطمئن پشتيبانيميكند تا مانع از گم شدن دادههاي مهم بازي روي شبكه شود. در واقع DirectPlay به صورت لايهاي است كه روي پروتكلهاي معمول شبكه مانند IPX ،TCP/IP و ... قرار دارد.
در واقع يك session يا جلسه در DirectPlay يك كانال ارتباطي بين چندين كامپيوتر است. يك برنامه كاربردي پيش از آنكه بتواند با سيستمهاي ديگر ارتباط برقرار كند، بايد در يك Session يا جلسه باشد. هر جلسه تنها يك ميزبان دارد و آن برنامه كاربردياي است كه آن جلسه را ايجاد كردهاست. تنها ميزبان ميتواند ويژگيهاي يك Session را تغيير دهد.
DirectX 9.0
اين كامپوننت، آخرين نسخه DirectX تا پيش از عرضه رسمي ويندوز ويستا است. مهمترين چيزي كه همراه DirectX 9.0 عرضه شد، High-Level Shader Language) HLSL) است. زبان HLSL جايگزين زبان اسمبلي براي نوشتن pixel shaderها و vertex shaderها در DirectX است. پيش از ارائه DirectX 9.0 توسعهدهندگان بازي بايدshaderها را با است?اده از يك زبان اسمبلي سطح پايين توسعه ميدادند. HLSL با ?راهمآوردن يك محيط برنامهنويسي توسعهدهنده ساده، توسعه همه بخشهاي نرما?زار مانند انيميشن و برنامهنويسي ا?كتها را آسان ميكند.
HLSL با همه پردازشگرهاي گرا?يكي (GPU) سازگار با DirectX كار ميكند و به توسعهدهندگان امكان ميدهد ا?كتهاي بصري را روي گستره وسيعتري از پلت?رمها ايجاد كنند؛ بدون اينكه نياز داشته باشند به جزئيات سختا?زار گرا?يكي توجه كنند.
DirectX 9.0 روي ويندوز 95 نصب نميشود. چون بازيهايي كه به DirectX 9.0 نياز دارند، به كامپيوترهاي جديدتر و قويتري هم نياز دارند كه ويندوز 98 يا نسخههاي جديدتر روي آنها نصب ميشود. تاكنون نسخههاي a ،b و c از DirectX 9.0 ارائه شده است. هر نسخه جديدتر از DirectX داراي امنيت، كارايي و سيستم ر?ع خطاي بهتري است.
يك بازي كامپيوتري را روي كامپيوترتان اجرا ميكنيد. ?علاً كارت گرا?يك شما روي اسلاتAGP سوار ميشود، پردازشگر سلرون داريد و ... پس از چند ماه يا چند سال كامپيوتر جديدي ميخريد. اكنون اسلات كارت گرا?يكي شما PCI Express است و يك پردازشگر 64 بيتي داريد. همان بازي را روي اين كامپيوتر هم نصب و اجراميكنيد! شايد به نظر طبيعي ميآيد كه همه چيز بايد همينطور باشد. اما چگونه يك بازي روي كامپيوترهايي با تراشهها و سختا?زارهاي مختل? و گاه ?ناوري مت?اوت اجرا ميشود؟ APIهاي گرا?يكي يا همان رابطهاي برنامهنويسي، بخش بزرگي از اين مشكل را حل ميكنند و امكانات گسترده ديگري را نيز در اختيار برنامهنويسان و توسعهدهندگان بازي و برنامههاي چندرسانهاي قرارميدهند. OpenGL وDirectX، دو مجموعه API گرا?يكي و صوتي هستند كه براي آسانتر ساختن توسعه بازيها و نرما?زارهاي چندرسانهاي طراحي شدهاند.
API گرا?يكي چيست؟
API درواقع بين برنامه و سختا?زاري كه برنامه روي آن اجرا ميشود، نقش يك هماهنگكننده را دارد و مانند پلي ميان سختا?زار و نرما?زار ارتباط ايجادميكند. يعني برنامهنويس كدهايي مينويسد كه دادههاي گرا?يكي خود را به وسيله دستورهاي استانداردي به درايور API مي?رستد نه مستقيماً به خود سختا?زار. سپس درايوري كه شركت سازنده سختا?زار توليدكرده است، اين كداستاندارد توليدشده را به ?رمت بومي و ويژهاي كه براي آن مدل خاص سختا?زار قابل شناسايي است، ترجمه ميكند.
Microsoft DirectX
شركت مايكروسا?ت در سال 1995 DirectX را ساخته و توسعه دادهاست. اين نرما?زار شامل مجموعه يكپارچهاي از ابزارهاي برنامهنويسي است كه به توسعهدهندگان امكان ميدهد انواع مختل? نرما?زارهاي مالتيمديا را روي پلت?رم ويندوز توليد كنند. DirectX به برنامهاي كه بر پايه آن طراحي شده امكان ميدهد به آساني قابليتهاي سختا?زار كامپيوتر را شناسايي كند و پارامترهاي برنامه را با آن هماهنگ سازد.
DirectX شامل APIهايي است كه دسترسي به بخشهاي ويژهاي از سختا?زار مانند تراشههاي شتابدهنده گرا?يك سهبعدي و كارت صوتي را ميسرميكند. اين APIها كنترل توابع سطح پايين، يعني نزديك به سختا?زار، شامل شتابدهنده گرا?يكي دو بعدي، پشتيباني از دستگاههاي ورودي مانند دسته بازي، ص?حهكليد و ماوس، و كنترل ميكس و خروجي صدا را انجام ميدهند.
DirectX 7.0 در سال 1999 با شش كامپوننت عرضه شد كه عبارت بودند از: Direct3D،DirectDraw ،DirectSound ،DirectPlay ،DirectInput و DirectMusic.
در اواخر سال 2000 ميلادي، DirectX 8.0 عرضه شد كه در آن كامپوننتهاي DirectSound و DirectMusic با هم ادغام شدند و با نام كامپوننت Direct Audio معر?ي شدند.
Direct3D و DirectDraw نيز با هم ادغام شدند و يك كامپوننت با نام DirectX Graphics را ساختند. DirectShow نيز به صورت يك API جداگانه پيادهسازي شد و به يكي از كامپوننتهاي DirectX تبديل گرديد.
DirectX 9.0 در ژانويه سال 2003 عرضه شد. ويژگيهاي خاص اين نسخه عبارتند از:
- قابليتهاي صوتي جديد در DirectSound
- سختا?زار رندركننده ويديويي با شتاب بيشتر
- بهبود قابليت برنامهريزي گرا?يكي
APIهاي همه كامپوننتهاي DirectX برپايه COM يا Component Object Model هستند. در ادامه به بررسي ه?ت كامپوننت DirectX 9.0 ميپردازيم كه عبارتند از: DirectDraw ،Direct3D ،DirectShow ،DirectSound ،DirectMusic ،DirectInput و DirectPlay.
1- DirectDraw
DirectDraw، كامپوننتي ويژه طراحي دوبعدي است كه به برنامهنويس اجازه ميدهد مستقيماً به حا?ظه كارت گرا?يك دسترسي يابد، صحنهها و ?ريمها را با هم تركيب نمايد يا bitmapها را در آنجا ذخيره كند. همچنين، براي برنامهها امكان دسترسي به سختا?زارهاي ويژه نمايش را مستقل از نوع سختا?زار ?راهم ميكند.
هر برنامه كاربردي DirectDraw الگوي يكساني دارد كه عبارت است از:
- ايجاد يك شي
- شروع حلقه
- انتقال به مانتيور
- پايان حلقه
- پاك كردن آن شي
منظور از واژه <يك شي> ميتواند هر تصوير دوبعدياي باشد و منظور از حلقه، حلقهاي است كه در برنامهنويسي هنگام تكرار منظم دستهاي از دادهها يا دستورها به كار ميبريم. تصوير ايجادشده پس از مدتي پاك ميشود و جاي خود را به تصوير ديگري ميدهد.
2- Direct3D
اين كامپوننت، دسترسي به توابع رندركننده گرا?يك سهبعدي تعبيه شده در بيشتر كارتهاي گرا?يك را ?راهم ميكند. Direct3D يك API سطح پايين سهبعدي است كه به نرما?زار امكان ميدهد مستقل از سختا?زار، با سختا?زار شتابدهنده ارتباط برقرار كند. لايهاي كه براي توسعهدهندگان بازي و گرا?يك كامپيوتري امكان طراحي و ساخت بازيها را مستقل از سختا?زار كامپيوترها ?راهم ميكند، لايهاي به نام
Hardware Abstraction Layer) HAL) است.
HAL با قابليتهايي كه به صورت گسترده در سختا?زارهاي گرا?يك سهبعدي پيادهسازي شدهاند ارتباط ايجاد ميكند و به سازندگان امكانميدهد درايورهايي را توليد كنند كه لايه HAL را به سختا?زار پيوند دهد. اين كار باعث ميشود برنامههاي كاربردي Direct 3D بدون اينكه براي نوع خاصي از قطعه سختا?زاري نوشته شده باشد، از ويژگيهاي بخشهاي خاص آن قطعه سختا?زاري بهرهببرد. در شكل يك چگونگي ارتباط لايه HAL با سختا?زار و نرما?زارهاي مرتبط نشان داده شده است.
شكل - چگونگي ارتباط لايه HAL با كارت گرا?يك و نرما?زارهاي مرتبط
http://www.shabakeh-mag.com/Data/Gallery/s63_gpl_1_s.jpg
همانگونه كه در شكل يك، نشان داده شده، نرما?زار بازي بالاترين سطح است و پس از آن كامپوننتهاي ترسيم دوبعدي و سه بعدي، يعني DirectDraw و Direct3D قرار دارند. لايه HAL يك رابط ميان كامپوننتهاي DirectX و كارت گرا?يك است.
در سيستم رندر Direct3D، ساختار اشياي سهبعدي پيش از آنكه شتابدهنده سهبعدي، يك صحنه سهبعدي را رندر نمايد و آن را به مانيتور منتقل كند، به وسيله CPU پردازش ميشود. نسخه ششم كامپوننت Direct3D از قابليتهاي كارتهاي گرا?يك جديدتر پشتيباني مينمايد و در هر گذر، چندين با?ت را با هم رندر ميكند.
كاهش زمان رندر به است?اده از نقشه با?تها نياز دارد. اين نسخه تكنيكهايي براي ا?زودن جلوهاي واقعيتر به صحنههاي سه بعدي را نيز دربردارد.
مانند anistropic filtering كه عنصر عمق را به trilinear filtering و نقشه برجستهسازي ميا?زايد كه موجب ايجاد شباهت بيشتر با?تها و نيز منابع نور تابيده شده بر سطوح مسطح با نمونههاي واقعي آنها ميشود.
نسخه ه?تم DirectX نسبت به نسخههاي پيش از خود بيست درصد سريعتر و شامل چند ويژگي ديگر بود. مهمترين آنها پشتيباني از تغييرات شتاب سختا?زاري و نوردهي (T&L) به وسيله اغلب كارتهاي گرا?يك سهبعدي آنزمان به ويژه كارتهايي است كه برپايه تراشههاي nVidia Geforce 256 و S3 Savage 2000 ساخته شدهاند. از زماني كه T&L عرضه شد، وقتگيرترين وظي?ه CPU هنگام اجراي بازيهاي پيشر?ته به شتابدهنده سهبعدي داده شد و بخش بزرگي از ظر?يت پردازنده اصلي به كارهاي ديگر مانند هوشمصنوعي بازي اختصاص داده شد و توسعهدهندگان بازي توانستند رندر را با جزئيات بيشتر انجام دهند و جلوههاي ويژه پيچيدهتري را در بازيها بهكار ببرند.
3- DirectShow
اين كامپوننت از بسياري از ?رمتهاي صوتي و ويديويي شامل AVI ،MPEG ،ASF ،WMA/WMV ،DV و MP3 و DirectX پشتيباني ميكند و روي ويندوزهاي 98، 2000، اكسپي و نرما?زار اينترنت اكسپلورر عرضه شده است.DirectShow پروسه كارهاي مالتيمديا مانند نمايش ?ايل ويديويي را به مجموعهاي از مراحل كه با نام
filter شناخته ميشوند تقسيم ميكند.
?يلترها تعدادي pin ورودي و خروجي دارند كه آنها را به هم متصل ميكند. طراحي كلي سازوكار اتصال به اين صورت است كه ?يلترها ميتوانند به روشهاي مختل? به هم متصل شوند كه هر نوع از اين اتصالها به معني انجام دادن يك كار است و توسعهدهندگان نرما?زار ميتوانند ا?كتهاي خود يا ?يلترهاي ديگري را به بخشي از اين گرا? براي انجام كار ويژهاي بي?زايند. گرا? ?يلتر DirectShow به صورت گسترده در ضبط صدا و ?يلم، و ويرايش آنها به كار ميرود.
شكل - يك گرا? ?يلتر كه كار نمايش يك ?ايل MPEG را نشان ميدهد.
در شكل دو، يك گرا? نمايش براي ?ايل ?يلمي از نوع MPEG نشان داده شده است. برنامههاي كاربردي DirectShow، براي پردازش دادههاي مالتيمديا، از اين گرا? است?اده ميكنند.
دادههاي چند رسانهاي در اين گرا? (در حالي كه كارها به وسيله برنامه كاربردي كنترل ميشوند) از ?ايل منبع به سمت مقصد كه ميتواند يك قطعه سختا?زاري باشد حركت ميكنند.
ولي در برخي مواقع، برنامه كاربردي علاوه بر كنترل گرا?، دريا?تكننده يا ?رستنده داده نيز هست.
هر گره اين گرا?، همانگونه كه گ?ته شد، يك ?يلتر است و كار ويژه خود را انجام ميدهد. ?يلتر source، دادهها را از يك ?ايل يا URL ميخواند. ?يلتر Parser، بخشهايي از دادههاي صوتي و ويديويي را به رمزگشاي مناسب مي?رستد. رمزگشاها، دادههاي صوتي و ويديويي را رمزگشايي مينمايند يا از حالت ?شردگي خارج ميكنند.
?يلتر رندركننده، دادههاي دريا?ت شده صوتي و ويديويي از رمزگشا را پخش ميكند يا آنها را نمايش ميدهد.
4- DirectSound
اين كامپوننت همزمان با ساخت ويندوز 95، زماني كه درايورهاي صوتي از نوع VXD بودند به DirectX ا?زوده شد. در اين كامپوننت APIهاي ويژهاي ايجاد شد كه نويسندگان درايورهاي صوتي ميبايست آنها را به محصولات خود، كه ?رمت VXD داشت، ميا?زودند تا به درستي با DirectSound كار كند.
برنامههاي چندرسانهاي با اين كامپوننت به سختا?زارهاي صوتي مانند كارت صوتي دسترسي پيداميكنند. از مهمترين ويژگيهاي اين API، تركيب صدا و كنترل سطح آن است.
DirectSound همچنين اجازه ميدهد چندين برنامه كاربردي، بدون پيش آوردن وق?ه، همزمان به كارت صوتي دسترسي داشته باشند. ايجاد ا?كتهاي صوتي از ديگر تواناييهاي DirectSound است. پس از سالها توسعه، اكنون DirectSound يك API پخته و كامل است و بسياري قابليتهاي ديگر را نيز ?راهم ميكند؛ مانند قابليت پخش صداهاي چند كاناله با وضوح و دقت بالا.
5- DirectMusic
تاكنون بازيهايي را تجربه كردهايد كه در تمام مدت يك مرحله، موسيقي يكنواخت و ثابتي دارند؟ بازياي را در نظر بگيريد كه برنامهنويسان آن ميخواهند يك آهنگ، در تمام مدت، در يك مرحله از آن به صدا دربيايد. با است?اده از برنامه DirectMusic Producer، آنها ميتوانند در آن مرحله براي آهنگ، يك درجه در نظر بگيرند.
اين درجه ميتواند بسته به نوع عملكرد شخصيت بازي، تغيير كند. اگر شخصيت بازي در حال راه ر?تن است، آهنگ آرام و هنگامي كه با دشمن خود مبارزه ميكند، آهنگ تندتر ميشود و يا نوع آهنگ تغيير ميكند و هنگامي كه مبارزه تمام ميشود، آهنگ دوباره آرام ميشود. اين تغييرها بدون ايجاد وق?ه، به صورت پويا و بدون دخالت كاربر انجام ميشود. چون براساس DirecMusic، آهنگ به صورت شناور و بدون وق?ه با نواختن وارياسيونهاي مختل? با قابليت واكنش به رويدادهاي بازي توليد ميشود.
DirectMusic، با دادههاي موسيقي براساس پيامهاي حاوي اطلاعات كار ميكند. يك آهنگ ميتواند در داخل سختا?زار و با نرما?زارهاي آهنگساز مانند Microsoft Synthesizer ساخته شود. DirectMusic از استانداردهايMIDI و DLS پشتيباني ميكند.
6- DirectInput
اين كامپوننت، سازوكار مشتركي را براي دسترسي به بسياري از كنترلكنندههاي بازي مانند دسته بازي، گيمپد، ص?حه كليد و ماوس ?راهم ميآورد. مهمترين تغييري كه هنگام عرضه DirectX8 در DirectInput ايجاد شد، آمدنaction map بود. action map از توابعي مانند راندن يك وسيله يا شليك يك گلوله (كه بهوسيله دستگاههاي ورودي ايجاد ميشود) است?اده ميكند. زماني كه يك سختا?زار ورودي مانند دسته بازي را ميخريد، معمولا ًaction mapنيز براي بسياري از انواع رايج بازيها مانند شبيهساز پرواز، تيراندازي اول شخص و بازيهاي مسابقهاي در آن پيادهسازي شده است.
7- DirectPlay
اين كامپوننت امكان بازي چند ن?ر را در بازيهاي چندن?ره ?راهم ميآورد، دسترسي به سرويسهاي ارتباطي را آسان ميسازد و راهي را براي بازيها ?راهم ميكند تا مستقل از پروتكل يا نوع سرويس آنلاين با يكديگر در ارتباط باشند. همچنين از پروتكلهاي ارتباطي مطمئن پشتيبانيميكند تا مانع از گم شدن دادههاي مهم بازي روي شبكه شود. در واقع DirectPlay به صورت لايهاي است كه روي پروتكلهاي معمول شبكه مانند IPX ،TCP/IP و ... قرار دارد.
در واقع يك session يا جلسه در DirectPlay يك كانال ارتباطي بين چندين كامپيوتر است. يك برنامه كاربردي پيش از آنكه بتواند با سيستمهاي ديگر ارتباط برقرار كند، بايد در يك Session يا جلسه باشد. هر جلسه تنها يك ميزبان دارد و آن برنامه كاربردياي است كه آن جلسه را ايجاد كردهاست. تنها ميزبان ميتواند ويژگيهاي يك Session را تغيير دهد.
DirectX 9.0
اين كامپوننت، آخرين نسخه DirectX تا پيش از عرضه رسمي ويندوز ويستا است. مهمترين چيزي كه همراه DirectX 9.0 عرضه شد، High-Level Shader Language) HLSL) است. زبان HLSL جايگزين زبان اسمبلي براي نوشتن pixel shaderها و vertex shaderها در DirectX است. پيش از ارائه DirectX 9.0 توسعهدهندگان بازي بايدshaderها را با است?اده از يك زبان اسمبلي سطح پايين توسعه ميدادند. HLSL با ?راهمآوردن يك محيط برنامهنويسي توسعهدهنده ساده، توسعه همه بخشهاي نرما?زار مانند انيميشن و برنامهنويسي ا?كتها را آسان ميكند.
HLSL با همه پردازشگرهاي گرا?يكي (GPU) سازگار با DirectX كار ميكند و به توسعهدهندگان امكان ميدهد ا?كتهاي بصري را روي گستره وسيعتري از پلت?رمها ايجاد كنند؛ بدون اينكه نياز داشته باشند به جزئيات سختا?زار گرا?يكي توجه كنند.
DirectX 9.0 روي ويندوز 95 نصب نميشود. چون بازيهايي كه به DirectX 9.0 نياز دارند، به كامپيوترهاي جديدتر و قويتري هم نياز دارند كه ويندوز 98 يا نسخههاي جديدتر روي آنها نصب ميشود. تاكنون نسخههاي a ،b و c از DirectX 9.0 ارائه شده است. هر نسخه جديدتر از DirectX داراي امنيت، كارايي و سيستم ر?ع خطاي بهتري است.