رفتن به مطلب

آشنايي با DirectX و OpenGL


 اشتراک گذاری

Recommended Posts

اشاره :

يك بازي كامپيوتري را روي كامپيوترتان اجرا مي‌كنيد. فعلا‌ً كارت گرافيك شما روي اسلا‌تAGP سوار مي‌شود، پردازشگر سلرون داريد و ... پس از چند ماه يا چند سال كامپيوتر جديدي مي‌خريد. اكنون اسلا‌ت كارت گرافيكي شما PCI Express است و يك پردازشگر 64 بيتي داريد. همان بازي را روي اين كامپيوتر هم نصب و اجرامي‌كنيد! شايد به نظر طبيعي ميآيد كه همه چيز بايد همين‌طور باشد. اما چگونه يك بازي روي كامپيوترهايي با تراشه‌ها و سخت‌افزارهاي مختلف و گاه فناوري متفاوت اجرا مي‌شود؟ API‌هاي گرافيكي يا همان رابط‌هاي برنامه‌نويسي، بخش بزرگي از اين مشكل را حل مي‌كنند و امكانات گسترده ديگري را نيز در اختيار برنامه‌نويسان و توسعه‌دهندگان بازي و برنامه‌هاي چندرسانه‌اي قرارمي‌دهند. OpenGL وDirectX، دو مجموعه API گرافيكي و صوتي هستند كه براي آسان‌تر ساختن توسعه بازي‌ها و نرم‌افزارهاي چندرسانه‌اي طراحي شده‌اند.

API گرافيكي چيست؟

API درواقع بين برنامه و سخت‌افزاري كه برنامه روي آن اجرا مي‌شود، نقش يك هماهنگ‌كننده را دارد و مانند پلي ميان سخت‌افزار و نرم‌افزار ارتباط ايجاد‌مي‌كند. يعني برنامه‌نويس كدهايي مي‌نويسد كه داده‌هاي گرافيكي خود را به وسيله دستورهاي استانداردي به درايور API مي‌فرستد نه مستقيماً به خود سخت‌افزار. سپس درايوري كه شركت سازنده سخت‌افزار توليد‌كرده است، اين كداستاندارد توليدشده را به فرمت بومي و ويژه‌اي كه براي آن مدل خاص سخت‌افزار قابل شناسايي است، ترجمه مي‌كند.

Microsoft DirectX

شركت مايكروسافت در سال 1995 DirectX را ساخته و توسعه داده‌است. اين نرم‌افزار شامل مجموعه‌ يكپارچه‌اي از ابزارهاي برنامه‌نويسي است كه به توسعه‌دهندگان امكان مي‌دهد انواع مختلف نرم‌افزارهاي مالتي‌مديا را روي پلتفرم ويندوز توليد كنند. DirectX به برنامه‌اي كه بر پايه آن طراحي شده امكان مي‌دهد به آساني قابليت‌هاي سخت‌افزار كامپيوتر را شناسايي كند و پارامترهاي برنامه را با آن هماهنگ سازد.

DirectX_Hero_Banner.jpg

DirectX شامل APIهايي است كه دسترسي به بخش‌هاي ويژه‌اي از سخت‌افزار مانند تراشه‌هاي شتاب‌دهنده گرافيك سه‌بعدي و كارت صوتي را ميسرمي‌كند. اين APIها كنترل توابع سطح پايين، يعني نزديك به سخت‌افزار، شامل شتاب‌دهنده گرافيكي دو بعدي، پشتيباني از دستگاه‌هاي ورودي مانند دسته بازي، صفحه‌كليد و ماوس، و كنترل ميكس و خروجي صدا را انجام مي‌دهند.

100px-Dx7logo.gif

DirectX 7.0 در سال 1999 با شش كامپوننت عرضه شد كه عبارت بودند از: Direct3D،DirectDraw ،DirectSound ،DirectPlay ،DirectInput و DirectMusic.

در اواخر سال 2000 ميلا‌دي، DirectX 8.0 عرضه شد كه در آن كامپوننت‌هاي DirectSound و DirectMusic با هم ادغام شدند و با نام كامپوننت Direct Audio معرفي شدند.

http://upload.wikimedia.org/wikipedi...px-Dx8logo.gif

Direct3D و DirectDraw نيز با هم ادغام شدند و يك كامپوننت با نام DirectX Graphics را ساختند. DirectShow نيز به صورت يك API جداگانه پياده‌سازي شد و به يكي از كامپوننت‌هاي DirectX تبديل گرديد.

DirectX 9.0 در ژانويه سال 2003 عرضه شد. ويژگي‌هاي خاص اين نسخه عبارتند از:

100px-Directx9.jpg

- قابليت‌هاي صوتي جديد در 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 با سخت‌افزار و نرم‌افزارهاي مرتبط نشان داده شده است.

s63_gpl_1_s.jpg

شكل 1 - چگونگي ارتباط لا‌يه HAL با كارت گرافيك و نرم‌افزارهاي مرتبط

همان‌گونه كه در شكل يك، نشان داده شده، نرم‌افزار بازي بالا‌ترين سطح است و پس از آن كامپوننت‌هاي ترسيم دوبعدي و سه بعدي، يعني 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 به صورت گسترده در ضبط صدا و فيلم، و ويرايش آن‌ها به كار مي‌رود.

350tr0w.jpg

شكل 2 - يك گراف ----- كه كار نمايش يك فايل 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 داراي امنيت، كارايي و سيستم رفع خطاي بهتري است.

DirectX 10

دوستداران بازي بايد خوشحال باشند از اين‌كه بدانند شركت مايكروسافت DirectX را نيز توليد كرده است و همراه پيش توزيع Direct3D 10 عرضه خواهد شد. همچنين نرم‌افزارMicrosoft Windows Game Explorer نيز عرضه شده‌ كه به برنامه‌نويسان و توسعه‌دهندگان امكان مي‌دهد امكانات بروزكردن خودكار (auto-updating) را به بازي‌هايشان بيفزايند. مايكروسافت مي‌خواهد DirectX 9.0 و DirectX 10 را روي ويندوز ويستا عرضه كند. به گفته Rodolph Balaz از برنامه‌نويسان توسعه‌‌دهنده Direct3D و OpenGL در مايكروسافت، DirectX 10 تنها با سيستم‌عامل‌هاي جديد كار خواهد كرد و در حال حاضر مايكروسافت، برنامه‌اي براي پشتيباني ويندوز اكس‌پي از آن ندارد.

DirectX_80x60Bnr_v2.gif

تا زمان نوشته شدن اين مقاله هنوز نسخه رسمي ويندوز ويستا عرضه نشده است. ولي به نظر مي‌آيد اين ويندوز، هم از DirectX 10 و هم از DirectX 9.0 پشتيباني خواهد كرد.

1002395_b.jpg

لینک به دیدگاه
Share on other sites

SGL OpenGL

شركت سيليكون گرافيكس(SGI ،OpenGL) را با هدف ساخت يك API براي توسعه برنامه‌هاي گرافيكي دوبعدي و سه بعدي عرضه‌كرده‌است. پيش از ساخته شدن APIهاي گرافيكي مانند OpenGL و DirectX، بسياري از توليدكنندگان سخت‌افزار، كتابخانه‌هاي گرافيكي مختلف و متفاوتي داشتند. به همين دليل پشتيباني از نسخه‌هاي مختلف نرم‌افزارهايشان روي پلتفرم‌هاي سخت‌افزاري مختلف هزينه‌بر و انتقال يك برنامه كاربردي از يك پلتفرم سخت‌افزاري به پلتفرم سخت‌افزاري ديگر بسيار وقت‌گير و سخت بود.

بنابراين SGI نمونه برنامه‌اي را توليد كرد كه توليدكنندگان سخت‌افزار بايد از آن براي توسعه درايورهاي OpenGL در سخت‌افزارهايشان استفاده كنند. اين برنامه به صورت اپن‌سورس ارائه شده‌است. ولي سازندگان اين سخت‌افزارها مي‌توانند قابليت‌هاي گوناگوني را برپايه OpenGL در سخت‌افزارهايشان ايجاد كنند. تصميم‌گيري درباره ايجاد تغييرات در OpenGL را كنسرسيوم ARB اتخاذ مي‌كند.

اين كنسرسيوم شامل اعضاي مهمي همچون اپل، اينتل، آي‌بي‌ام، سان، ATI، دل، nVIDIA، سيليكون‌گرافيكس و3Dlabs است و از سوي شركت‌هاي معتبر ديگري مانند متراكس، S3 ،Xi و Quantum 3D حمايت مي‌شود. توسعه‌دهندگان نرم‌افزار براي استفاده از OpenGL در نرم‌افزارهايشان نيازي به اخذ مجوز ندارند. ولي توليدكنندگان سخت‌افزار براي پياده‌سازي سخت‌افزاري OpenGL نيازمند اخذ مجوز از SGI هستند.

OpenGL چيست؟

در اوايل پيدايش OpenGL، از اين API در كارهاي صنعتي، طراحي وسايل داخلي، مكانيكي و نيز در آناليزهاي علمي و آماري استفاده مي‌شد.

http://www.opengl.org/img/opengl_logo.jpg

در سال 1996، نويسندگان و توسعه‌دهندگان بازي‌هاي كامپيوتري از نسخه ويندوزي OpenGL براي ساخت بازي‌هاي كامپيوتري استفاده كردند. OpenGL براي پشتيباني از گستره وسيعي از تكنيك‌هاي رندركردن گرافيكي پيشرفته طراحي شده است كه مي‌توان پاره‌اي از آن‌ها را به اين‌صورت نام برد:

نورپردازي: قابليت تحليل ميزان رنگ هنگام تابش مدل‌هاي متفاوت نور به يك سطح از يك يا چند منبع نور مختلف.

سايه‌سازي نرم: قابليت تحليل افكت‌هاي سايه هنگام تابش نور به يك زاويه و ايجاد اختلا‌ف نور خفيف در مقابل آن سطح (مانند نور كمي كه هنگام تابش آفتاب به يك صخره يخي در اطراف آن ايجاد مي‌شود).

حركت محو ومدل‌سازي: توانايي تغيير مكان و اندازه پرسپكتيو يك شي در فضاي سه بعدي.

مجموعه امكانات OpenGL شبيه Direct3D است. ولي API سطح پايين‌تر آن (نزديك‌تر به سطح سخت‌افزار) باعث مي‌شود كنترل خوبي روي عناصر اصلي ايجاد صحنه‌هاي سه بعدي مانند اطلا‌عات سه‌ضلعي‌ها كه سلول‌هاي تشكيل‌دهنده يك مدل سه بعدي هستند داشته باشد.

دو سطح پشتيباني از شتاب‌دهندگي سخت‌افزاري براي OpenGL وجود دارد: installing client driver) ICDs) كه به نوردهي ايجاد تغيير و رستركردن (تبديل يك فريم سه بعدي چند ضلعي ذخيره شده درframe buffer به يك تصوير كامل با بافت‌ها و نشانه‌هاي عمق و نور) شتاب مي‌دهد و mini client server) MCs) كه از رستركردن پشتيباني مي‌كند.

OpenGL 1.4 و OpenGL 1.5 به‌ترتيب در تابستان 2002 و 2003 معرفي شدند كه هر يك امكانات و كاربردهاي بيشتري از نسخه‌هاي پيش از خود داشتند. بزرگ‌ترين آن‌ها OpenGL Shading Language بود؛ زباني ويژه برنامه‌نويسي vertex-shader و pixel-shader كه در صورت نياز به OpenGL الصاق مي‌شد. OpenGLShading Language زباني شد كه به سرعت در سطح گسترده‌اي مورد پشتيباني يونيكس، ويندوز، لينوكس و ديگر سيستم‌عامل‌ها براي توسعه‌دهنده گرافيك‌هاي تعاملي و برنامه‌هاي كاربردي ترسيمي قرار گرفت.

OpenGL 2.0

OpenGL 2.0 آخرين نسخه عرضه شده تا اوايل سال 2006 ميلا‌دي است. 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 3.2 است.

OpenGL Volumizer

OpenGL Volumizer، يك API گرافيكي است كه در بخش‌هاي انرژي، توليد، داروسازي و تجارت كاربرد دارد. اين API براي انجام كارهاي تعاملي با كيفيت بالا‌ و بصري نمودن و شبيه‌سازي يك محيط با استفاده از مجموعه بزرگي از داده‌هاي حجمي (داده‌هايي كه مختصات يك شي در فضاي سه بعدي را نشان مي‌دهند) طراحي شده است. براي نمونه در نرم‌افزارهاي پزشكي براي شبيه‌سازي وضعيت بخش خاصي از بدن، از اين نرم‌افزار استفاده مي‌شود. OpenGL Volumizer آخرين نسخه اين API تا اوايل سال 2006 ميلا‌دي است كه بر پايه كتابخانه گرافيكي استانداردOpenGL ساخته شده و شامل رابط كلا‌س ++C و قابل‌استفاده در سيستم‌عامل‌هاي ويندوز و لينوكس 32بيتي و 64‌بيتي است.

OpenGL Multipipe SDK

OpenGL Multipipe SDK يك لا‌يه API است كه مديريت برنامه‌هاي گرافيكي را در زير سيستم‌ها و ساختارهاي گرافيكي چندگانه آسان مي‌كند. برنامه‌هاي كاربردي نوشته شده برپايه اين API به نرمي و رواني، هم روي سيستم‌هاي روميزي تك پردازنده‌اي و هم روي سيستم‌هاي چند پردازنده‌اي با سيستم‌هاي گرافيكي قدرتمند اجرا مي‌شوند.

نتيجه‌گيري

همان‌گونه كه بيان شد ارتباط بين برنامه‌ها و سخت‌افزاري كه آن‌را اجرا مي‌كند برعهده API است. سازندگان بزرگ نرم‌افزار و سخت‌افزار API خاصي را براي برنامه‌هاي مالتي‌مديا آماده كرده‌اند كه مطرح ترين آن‌ها DirectX و OpenGL هستند.

shabakeh-mag.com

لینک به دیدگاه
Share on other sites

DirectX10‎ وWindows Graphic Foundation 2.0 ‎ اسامي هستند كه ميتوانند انقلاب جديدي را در گرافيك هاي سه بعدي و بازي هاي ‏پيشرفته كامپيوتري نويد دهند. هنگام عرضه Windows Vista‏ در ابتداي سال جاري ميلادي ما شاهد حضور ‏API‏ جديد شركت ‏Microsoft‏ يعني DirectX 10‎‏ بوديم كه استانداردهاي موجود براي پردازش سه بعدي و تجربه چند رسانه اي كاربران را به سطح جديدي ارتقأ ‏داده است.هرچند زمان زيادي از معرفي ‏DirectX 10‎‏ مي گذرد، اما ناگفته هاي زيادي در رابطه با اين ‏API‏ بنيادي وجود دارد كه ‏در اين مقاله به بررسي آنها پرداخته شده است.‏

API‏ يا واسط نرم افزاري ‏DirectX‏ از مجموعه اي از اينترفيس ها تشكيل شده است كه مشخص ميكنند توسع

دهندگان ‏بازي ها و نرم افزارهاي مختلف چگونه بايد با سخت افزار به صحبت بپردازند. نوشتن يك برنامه براي يك ‏API‏ استاندارد بسيار ‏ساده تر از نوشتن و بهينه سازي همان برنامه براي اجرا بر روي سخت افزارهاي خاص است. به منظور هرچه يكپارچه تر كردن ‏سخت افزار و نرم افزار، مايكروسافت يك بازنگري كلي را بر روي ‏DirectX‏ اعمال كرده است. از آنجايي كه اين ‏API‏ در طول ‏زمان حياط ‏Windows Vista‏ به عنوان پايه و اساس توسعه و اجراي هر نرم افزار و يا سخت افزار جديدي مورد استفاده قرار ‏خواهد گرفت، ‏Microsoft‏ سعي كرده است با ارايه برخي از مشخصات پيشرو و كاملا جديد و علاوه بر آن ساده سازي اين ‏API‏ به برنامه نويسان امكان دهد تا با سرعت و سهولت بتوانند با دريافت حداكثر كارايي از سخت افزارهاي ‏PC‏ ،نرم افزارها و ‏بازي هايي با كيفيت و كارايي بالا را طراحي كنند.‏

Direct3D‏ قسمتي از ‏DirectX‏ است كه مستقيما بر اجرا و عملكردهاي نرم افزارهاي سه بعدي نظارت دارد. در حقيقت ‏مهمترين بخش ‏DirectX‏ ، ‏Direct3D‏ است. بزرگترين تحولات صورت گرفته در ‏DirectX10‎‏ نيز مستقيما به ‏Direct3D‏ مربوط مي ‏شود. ‏Direct3D10‎‏ با يكپارچه كردن دستورالعمل ها و استاندارد نمودن مشخصات سايه زن هاي قابل برنامه نويسي، برنامه ‏نويسان را از شر سايه زن هايي كه هر سازنده به صورت اختصاصي طراحي و روانه بازار ميكرد رها ميسازد. بعلاوه مايكروسافت ‏در مدل درايورهاي مربوط به كارت هاي گرافيك و نمايشگرها نيز تجديد نظر كرده است.

9934.jpg

تصویری ساخته شده توسط Unreal Engine 3 برپایه DirectX 10

به اين خاطر كه در Windows Vista‏ تمام دسك تاپ به صورت سه بعدي به نمايش در مي آيد، كارت گرافيك ديگر تنها براي بازي كردن مورد ‏استفاده قرار نمي گيرد. هنگامي كه شما يك صفحه نمايش سه بعدي داريد و هر برنامه را در صفحه سه بعدي مربوط به ‏خودش اجرا مي كنيد، درايورها كارت گرافيك بايد به اندازه كافي با ثبات و انعطاف پذير باشد تا بتواند نقش پردازنده گرافيكي را ‏افزايش دهد. به همين منظور مايكروسافت تصميم گرفته است تا درايورها را به دو بخش مجزا تقسيم نمايد. يك بخش براي ‏اجراي دسك تاپ و بخش ديگر براي اجراي نرم افزارها و بازي هاي سه بعدي. اين تقسيم بندي براي افزايش ثبات زير ‏سيستم گرافيكي طراحي شده است و به سيستم عامل امكان ميدهد حتي در صورتي كه يك برنامه كاربردي و يا بازي سه ‏بعدي به علت خطاهاي نرم افزاري و يا سخت افزاري متوقف ميشود، همچنان و با وجود يك دسك تاپ كاملا سه بعدي قابل ‏استفاده و با ثبات باقي بماند. وجود چنين نوآوري هايي همچنين به اين معني است كه مايكروسافت ‏DirectX10‎‏ را براي ‏Windows XP‏ ارايه نخواهد كرد، به خاطر اينكه بسياري از پيشرفت هاي صورت گرفته در ‏Direct3D10‎‏ مستقيما به مشخصات ‏مدل جديد درايور كارت گرافيك ‏Windows Vista‏ نياز خواهد داشت.‏

استفاده وسيع تر از توانايي هاي كارت گرافيكي براي اجراي كاربردهاي مختلف، نياز به اختصاص منابع سيستمي بيشتر از ‏سوي سيستم عامل به آن را دارد. سيستم عامل بايد به كاربردها امكان دهد تا بتوانند سخت افزار را به نحو موثرتري به ‏اشتراك بگذارند. بزرگترين تغيير در اين زمينه در ‏Windows Vista‏ تكنولوژيي است كه با نام ‏Virtualized Memory‏ و يا حافظه ‏مجازي شناخته مي شود. از اين پس كارت گرافيك فضاي حافظه اختصاصي خود را در حافظه سيستم خواهد داشت. اين ‏حافظه اختصاصي ميتواند براي ذخيره داده هايي كه داراي اندازه بزرگتر از حافظه محلي كارت گرافيك هستند مورد استفاده ‏قرار گيرد. هم اكنون كارت هاي گرافيكي گران قيمت و سطح بالا معمولا با حافظه هايي به ميزان 256 يا 512 مگابايت عرضه ‏ميشوند. اما بازي ها ميتوانند به سادگي تمامي حافظه موجود را براي ذخيره قطعات بسيار بزرگ داده، مانند بافت هاي با ‏وضوح بسيار بالا، مورد استفاده قرار دهند.

مدير عامل شركت ‏Epic Games‏ كه به تازگي موتور بسيار قدرتمند ‏Unreal Engine 3.0 ‎‏ را معرفي كرده و در حال توسعه ‏عناوين معروفي چون ‏UT2007‎‏ و ‏Gears Of War‏ ميباشد، در اين باره ميگويد: ‏

‏«تكنولوژي هايي مانند بافت گذاري مجازي ‏‎(Virtual Texturing)‎‏ ميتواند گلوگاه هاي مرتبط با اندازه بافت ها را در حافظه هاي ‏گرافيكي بر طرف نمايد. اندازه بافت هايي را كه ما در ‏DirectX9.0‎‏ ميتوانستيم با حفظ كارايي كامل استفاده كنيم به وسيله ‏حجم حافظه محلي كارت گرافيكي محدود شده بود، اما در ‏DirectX10‎‏ حجم آنها تنها توسط اندازه حافظه سيستم محدود ‏خواهد شد. او توضيح ميدهد كه با در اختيار داشتن چنين امكاناتي، سطح استفاده از بافت ها در بازي ها و نرم افزارهاي سه ‏بعدي بين 2 تا 4 برابر افزايش خواهد يافت كه اين براي كساني كه از موتور ‏Unreal Engine 3.0‎‏ براي توسعه بازي هاي خود ‏استفاده ميكنند بسيار عالي است. هرجا كه طراح بخواهد ميتواند از بافت هايي با كيفيت و وضوح بالا، براي مثال در وضوح ‏‎2048x2048‎‏ پيكسل، استفاده كند و سپس آنها را براي اجرا بر روي سيستم هاي با قدرت پايين تر به اندازه هاي كوچكتري ‏مقياس دهي كند.»‏

كارت هاي گرافيكي براي تطابق با استدانداردهاي ‏DirectX 10‎‏ و افزايش كارايي نياز به رعايت نكات دقيقي دارند. كارت هاي ‏گرافيك بايد داراي مجموعه كاملي از مشخصات باشند تا بتوانند تاييديه هاي ‏DirectX 10‎‏ را بدست آورند. البته اين استاندارها ‏به طور كامل با آنچه كه در نسل فعلي كارت هاي گرافيكي شاهد ان هستيم متفاوت نخواهند بود. براي مثال كارت هايي كه از ‏DirectX 9.0c‏ و يا سايه زن هاي نسخه 2 پشتيباني كنند ميتوانند از بسياري از توابع موجود در ‏DirectX 10‎‏ نيز پشتيباني كنند. ‏اما ‏Microsoft‏ مشخصه هاي كاملا دقيقي را اعلام كرده است تا سازندگان مختلف پردازنده هاي گرافيكي مجبور به ساخت ‏سخت افزارهاي سازگار با يكديگر شوند. براي مثال تفاوت هاي موجود در واحد هاي مميز شناور پردازنده هاي گرافيكي ‏مختلف شركت هاي ‏ATI‏ و ‏nVIDIA‏ توسعه دهندگان بازي را براي سازگار كردن موتور بازي با هر دو نوع پردازنده گرافيكي تحت ‏فشار قرار ميداد، اما مشخصه هاي تعريف شده در ‏DirectX 10‎‏ كمك بزرگي به حذف اينگونه ناسازگاري ها در سخت افزارهاي ‏مختلف و در نتيجه كاهش هزينه و زمان توسعه نرم افزار براي كار با آنها خواهد كرد.

لینک به دیدگاه
Share on other sites

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .
توجه: مطلب ارسالی شما پس از تایید مدیریت برای همه قابل رویت خواهد بود.

مهمان
ارسال پست در این تاپیک...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

 اشتراک گذاری

×
  • اضافه کردن...