PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مقاله چرا Directx 11 مهم است؟



diamonds55
7th December 2008, 03:38 PM
http://forums.hotoverclock.com/images/icons/icon5.gif چرا Directx 11 مهم است؟
مایکروسافت با Directx 10 جامع ترین بازنگری از زمان ایجاد API خود به بعد را بر روی آن انجام داد.


البته Directx 10 مخالفهای زیادی هم دارد و انتقادات شدیدی هم ازش شد که باعث شد برنامه نویسان به اون رو نیاورند و منتظر Directx 11 بمونند. این قضیه را حتی در تصویر که لوگوی directx هست میبینید که منتقدان نسخه 10 روی آنرا خط زدند و 11 را جلوی آن نوشتند که به معنی این هست که منتظر نسخه 11 هستند. که این انتظار هست که باعث مهم شدن Directx 11 میشود.



http://images.techtree.com/ttimages/story/91408_matter.JPG

قبل از همه چیز از آنجائیکه مایکروسافت نهایتا پرده را از روی API خود کنار زده است و همچنین بخاطر آنکه این محصول هنوز یک رویداد خبرساز به حساب میاد، رویدادی که ایده ای از آنچه باید از سخت افزارهای سالهای آتی انتظار داشته باشیم را در اختیارمان قرار میدهد. این احتمال بسیار وجود داره که Directx 11 به یک مورد کاملا مهم تبدیل بشه البته نسبت به Directx 10 چون مایکروسافت فاصله زیادی بین نسخه های API خودش ایجاد کرده که میشه به اون یک ارتقاء افزایشی گفت و این API با نسخه های قبلی و همینطور سخت افزارهای قبلی خود کاملا سازگار است و مورد بعد اینکه Directx 11 نه تنها برروی ویندوز 7 نصب میشه بلکه برروی ویستا نیز نصب میشود و همین یک امتیاز برتری نسبت به نسخه 10 هست چون نسخه 10 فقط روی ویستا جواب میدهد و همین باعث محدودیت gamer ها شد و همینطور برنامه نویسان. تا اون زمان xp کاملا ارزش خود را از دست میدهد البته نه فقط برای direct بلکه بخاطر سخت افزارهای کاملا حرفه ای تر از امروزی، و این دلیلی هست که میشه گفت با اومدن Directx11 کاربران مجبورم xp را ترک کنند که این البته بیشتر برای کسانی است که بازی میکنند. چون برنامه های جدید و بازی های جدید با نسخه directx11 سازگار میشوند.
با ارائه Directx 10 مایکروسافت مورد سرزنش قرار گرفت بخاطر اینترفیس برنامه نویسی جدید در میان بازیکنان و برنامه نویسان که به یک اندازه با ناهمگونی مواجه شد.


مایکروسافت تصمیم گرفته تا به تنهایی مشکلاتی را حل کند. یکی از این مشکلات Multi-threaded هست. حالا که دارم این مطلب را دارم مینویسم و به اینجا رسید ، دارم به این نتیجه میرسه که خیلی جا برای بحث داره و شاید دو قسمت بشه پس آمادگیشو داشته باشید.
شاید برای شما حرفی که میزنه عجیب باشه اونم اینکه شما فکر میکنید با اینکه خیلی وقته که چند هسته ای ها به بازار عرضه شدند برنامه نویسان پس دیگه کار خودشون رو خوب بلد هستند؛ اما موتورهای کنونی هنوز صرفا از یک رشته واحد برای راندو استفاده میکنند. و بقیه آنها برای صدا ، منابع decompression ، خصوصیات فیزیکی و ... استفاده میشوند. حالا دلیلش چیست که تقسیم نشدند بخاطر این هست بعضی از آنها به نحوه کار GPU ها و گروه دیگری به API 3 بعدی مورد استفاده مربوز میشند. بخاطر همین هست که مایکروسافت میخواد خودش مشکل را حل کنه.
حتی زمانیکه GPU ها در حالت SLI یا Crossfire به یکدیگر متصل باشند باز میبینید که تنها یک GPU وجود داره چون هدف آنها ساخت یک تصویر است که تنها با یک GPU مجازی واحد برروی سیستم شما وجود داره که نتیجه اش اینه که یک بافر فرمان وجود داره. وقتیکه یک منبع واحد در میان رشته های متعدد به اشتراک گذاشته میشود، برای جلوگیری از نوشته شدن همزمان فرامین رشته های متعدد و ایستادن آنها برروی یک پای یکدیگر از تکنیک Mutex Mutual exclusion استفاده میشه. این به این معنی است که تمام مزایای استفاده از رشته های متعدد توسط یک بخش حیاتی که کد را Serialize میکنه از بین خواهد رفت. هیچ API نمیتونه این را برطرف کنه چون ذاتا به نحوه برقراری ارتباط cpu و GPU وابسته است. ولی مایکروسافت یک API را عرضه کرده که میتونه برای برطرف نمودن آن تلاش کنه. Directx 11 بافرهای ثانویه ای را معرفی کرده است که میتوانند ذخیره سازی شده و بعدا مورد استفاده قرار بگیره.

به این ترتیب هر رشته دارای یک سابقه معوقه است که در اون فرامین نوشته شده در یک فهرست نمایش ضبط میشود که میتونه بعدا در رشته پردازشی اصلی درج شود. وقتی یک فهرست نمایشی توسط رشته اصلی فراخوانی بشه Execute باید اثبات شده باشد که رشته مربوط کار پرکردن آنرا به اثبات رسانده است. این مدل اجرا حداقل به بخشی از کار راندو اجازه میدهد که موازی سازی شود، حتی اگر شتابدهی بدست آمده چندان ایده آل نباشد.
مشکل نسخه های قبلی Directx ایجاد منابع مثلا بافتها بود در نسخه های 9 و 10 منابع باید در رشته راندو انجام بشه. برنامه نویسان با ایجاد رشته ای که بافت را از دیسک خوانده و Decmpress نموده و سپس منبع آبجکتهای Direct3d که خودش در رشته اصلی ایجاد شده است را پر کنه، یعنی این مشکل را دور میزدند.
اما بخش عمده ای از بار کاری هنوز روی رشته اصلی قرار داره که قبل از دچار اضافه بار overload است. این وضعیت ، توازن مناسب را تضمین نمیکند و به زمانهای اجرای خوبی نیاز دارد. بخاطر همین مایکروسافت یک اینترفیس جدید را با Directx 11 معرفی کرده که یک برنامه نویس میتونه یک آبجکت device را در هر رشته ایجاد نماید که برای بارگذاری منابع مورد استفاده قرار خواهد گرفت. هماهنگی میان توابع device بطور دقیق تری نسبت به Directx 10 انجام خواهد شد و از نظر زمان پردازنده نیز بسیار اقتصادی تر است.

microsoftwindows.blogfa


http://www.fudzilla.com/index.php?op...10610&Itemid=1 (http://www.fudzilla.com/index.php?option=com_content&task=view&id=10610&Itemid=1)

http://ve3dmedia.ign.com/images/02/71/27186_DraculaOrigin-02_normal.jpg





http://pix.nofrag.com/0/4/5/0d254f0e827e512911a5e1ea24dc1.jpg

استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است

استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد