این بحث در ادامه معرفی DirectX هست و یکی از مهمترین قسمت های DX رو معرفی میکنه .
Direct3D قسمتی از DirectX که وظیفه ساخت و رندر کردن تصاویر و برنامه های کاربردی 3D رو به عهده داره .
از دید یک برنامه نویس ,Direct3D مجموعه ای از API های سطح پایینLow-level API هست که برای Render کردن و ساختن تصاویر ویدئویی از شون استفاده میشه.
برای مثال فراخوانی دستور IDirect3DDevice9::Clearکه یکی از متود های Direct3D هست , توسط یک برنامه کاربردی موجب میشه که صفحه نمایشگر به طور کامل پاک شود .
Direct3D مثه یک پل ارتباطی بین برنامه کاربردی و سخت افزار گرافیکی هست .
البته D3D به طور مستقیم با خود سخت افزار ارتباط نداره , علتش هم تنوع زیاد و معماری های مختلف سخت افزار های گرافیکی هست .
این ارتباط از طریق درایور کارت گرافیک انجام میشه و همه دستورات D3D از طریق درایور به سخت افزار ابلاغ میشه ... درایور کارت گرافیک چیست ؟
نرم افزاری که از طرف سازنده کارت گرافیک به همراه کارت گرافیک عرضه میشه و دید یکنواختی از تمامی ویژگیها و امکانات کارت گرافیک به سیستم عامل ارائه میده .
اگر ازیک متود D3D استفاده بشه که توسط کارت گرافیک پشتیبانی نشه , منجر به هنگ کردن یا نتایج غیر منتظره میشه .
برای پیشگیری از این حالت بهتر است همیشه از دستورات Vertex Processing استفاده شود .
کارتهای گرافیک امروزی با پشتیبانی کردن از آخرین ورژن DX تقریبا هیچ وقت با این مشکلات مواجه نمیشن .
موفق باشید
:11():
کسری
:11():
mehrab009
11-01-13, 13:41
سلام
من تازه عضو شدم و اگه جای این پرسش اینجا نیست به بزرگواری خودتون ببخشید
یه سوال داشتم
هر بازی که روی لپ تاپم نصب میکنم فقط یه ارور میده اونم اینه
cannot find direct3d hardware acceleration on your primary display device
چه کار کنم؟
خواهش میکنم سریع تر کمک کنید
mer30
Dj_aghamajid
13-01-13, 14:17
درود بر شما
ممنون بابت مطلب خوبتون.
اگه ممکن در این مورد هم مطلب بگذارید:
Open-CL
نحوه ی بکار گیری سی پی یو و کارت گرافیک با Open-CL و Direct3D برای افزایش پرفرمنس در گیم ها یا رندر هایی مثل 3Dsmax
تشکر
alksdj
14-01-13, 00:49
درود بر شما
ممنون بابت مطلب خوبتون.
اگه ممکن در این مورد هم مطلب بگذارید:
Open-CL
نحوه ی بکار گیری سی پی یو و کارت گرافیک با Open-CL و Direct3D برای افزایش پرفرمنس در گیم ها یا رندر هایی مثل 3Dsmax
تشکر
OpenGL چيست؟
در اوايل پيدايش OpenGL، از اين API در كارهاي صنعتي، طراحي وسايل داخلي، مكانيكي و نيز در آناليزهاي علمي و آماري استفاده ميشد.
در سال 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 به نرمي و رواني، هم روي سيستمهاي روميزي تك پردازندهاي و هم روي سيستمهاي چند پردازندهاي با سيستمهاي گرافيكي قدرتمند اجرا ميشوند.
alksdj
14-01-13, 00:52
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 با سختافزار و نرمافزارهاي مرتبط نشان داده شده است.
Only the registered members can see the link
شكل 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 به صورت گسترده در ضبط صدا و فيلم، و ويرايش آنها به كار ميرود.
Only the registered members can see the link
شكل 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 10 و هم از DirectX 9.0 پشتيباني خواهد كرد.
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 در كارهاي صنعتي، طراحي وسايل داخلي، مكانيكي و نيز در آناليزهاي علمي و آماري استفاده ميشد.
در سال 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 هستند.
Dj_aghamajid
19-01-13, 14:30
درود بر آقا مهدی عزیز.
متشکرم.
این رو هم اگه ممکنه توضیح بدبد:
Open Computing Language (OpenCL)
alksdj
19-01-13, 20:21
درود بر آقا مهدی عزیز.
متشکرم.
این رو هم اگه ممکنه توضیح بدبد:
Open Computing Language (OpenCL)
خواهش میکنم آقا مجید وظیفه بود
در مورد این موضوع هم تحقیق میکتم