چرا OpenGL از Directx شکست خورد؟

نوشته شده توسط در فروردین ۳, ۱۳۸۸ در Microsoft Directx - بدون نظر

بالاخره نوبت شد مطلبی که طرفدار زیاد داشت را بنویسم اگر دیر مینویسم بخاطر این هست که مطلب طولانی بود و من فرصت برای نوشتن آن نداشتم. جمعه هفته پیش شروع بنوشتن کردم ولی نوشته هایم همانطور که توضیح دادم پرید. و امیدوارم کسانی مثل آقا وحید عاطفه خانوم که خیلی درخواست کردند از خواندنش لذت ببرند. خوب بگذریم…

قبل از هر چیز در وبلاگ آقای طاهری مطلب جالبی درباره یکی از ابزارهای ویستا نوشته شده که پیشنهاد میکنم حتما بخونید چون خیلی جالب هست و آقای طاهری نشون میده که حوصله اش از من بیشتر هست توی مطلب نوشتن چون دونه دونه منوها را توضیح میده من چون فرصت ندارم مجبورم فقط بیس کار را بگم و بقیه را به عهده خواننده بذارم.

http://tomtech999.files.wordpress.com/2008/05/vs.jpg

من در مطلب قبلی درباره تفاوت بین نسخه های directx نوشتم و هم اکنون همانطور که قول دادم میخوام راجع به تاریخچه directx و OpenGL بنویسم که طبق آخرین خبری هم که خودم دادم OpenGL 3 از directx شکست خورد و احتمالا directx از این به بعد یکه و تنها روی سیستم عاملها میتازد.

این ۳ عدد تصویری را که میبینید در پائین، تصاویری است که توسط OpenGL محاسبه شده که اگر خوب دقت کنید شما را یاد directx 7 می اندازد.

http://homepage.ntlworld.com/neal.tringham/Pseudonymz/ghostmas.jpg

Siege by Denied_Reality

Jump by CodeMonkeys

OpenGL هیچگاه نتوانست از نسخه ۷ directx فراتر برود و هنگامیکه directx9 به بازار اومد و بعد از نسخه ۹٫۰c دیگر حرفی برای OpenGL نماند. و حالا که صحبت از نسخه ۱۰ directx هست و همینطور ۱۱ که احتمالا با ویندوز ۷ عرضه میشود.. من در این مطلب قرار است مسائل این دو رقیب قدیمی را بشکافم. فقط قبل از اینکه بخوام بنویسم ایمیلهایی دریافت کردم که گفتن حتما بی طرف بنویس. من همیشه سعی کردم بی طرف بنویسم اگر مطلبی درباره مایکروسافت مینویسم هدف آموزش هست نه تعصب. متاسفانه کاربران لینوکس در بعضی مواقع تعصبی به قضیه نگاه میکنند تا واقعیت.

تصویری را که در پائین مشاهده میکنید تفاوت بین دو نسخه direct 9.0c و direct 10 نشان میدهد. این تصویر توسط هر دو رندر شده و چنین نتیجه ای بدست آمده که با اینکه در تصویر میبینید تفاوت بین نسخه ۹ و ۱۰ زیاد است ولی نسخه ۱۰ دربین بازی نویسان جا نیافتاد که من دلیلش را خواهم نوشت.

این روزها همه جا صحبت directx هست برای بازی یا نرم افزارهای گرافیکی و کاربرانی که کمتر از ۱۰ سال است به جمع کاربران کامپیوتر پیوستند بدرستی نمیدونند که ۱۰ سال پیش جنگی بین دو رقیب یعنی Microsoft و Silicon Graphics بود. این جنگ بیشتر برای تسلط روی بازار API های ۳ بعدی بود و هر دو شرکت بدجوری تلاش میکردند که که بازار را بدست خود بگیرند در آن موقع مایکروسافت پشتیبانی مالی قوی داشت و شرکت SGI هم تخصص و اعتبار خود را در حوزه Real-time 3d به همه نشان داده بود. هنگامیکه این جنگ در بین این دو وجود داشت SGI موفق شد مشهورترین بازی نویس زمان را تصاحب کنه که نامش هست John carmack. در صورتی که دوست دارید بیوگرافی این شخص را بخوانید اینجا را کلیک کنید.

http://www.aolcdn.com/ch_gamedaily/carmack.jpg

تا حدودی بخاطر موفقیت موتور Quake پشتیبانی جدی از OpenGL به اندازه کافی اهمیت پیدا کرد تا انگیزه تامین درایورهای کامل را در تولید کنندگان کارتهای ۳d ایجاد کنه. همین ویژگی باعث شد که ۳dfx یکی از مزایای برتریهای اولیه خود را بدست آورده ATI که هنوز با پشتیبانی خود از OpenGL درگیر بود را عقب بزند.
در همین حال مایکروسافت کار خودش را از اول شروع کرده بود و منحنی یادگیری API این شرکت طولانی بنظر میرسید. من در همین وبلاگ مطلب دیگری راجع به direct نوشتم و گفتم که نسخه ۴ directx هیچگاه منتشر نشد. خلاصه direct 3D مایکروسافت اینترفیسی گیج کننده ای برای برنامه نویسان داشت ولی اینترفیس OpenGL واقعا بی نظیر بود. در آن زمان همه فکر میکردند که مایکروسافت هیچگاه به پای OpenGL نمیرسد و بزودی دلسر خواهد شد ولی یکی از شگفتیها این بود که با هربار ارائه نسخه جدید از direct 3D مایکروسافت یک پله به OpenGL نزدیک میشد و واقعا باید اعتراف کرد مایکروسافت برای اینکه بتونه بازار API را بدست بگیره خیلی تلاش کرد. باید اعتراف کرد که درسته که مایکروسافت اینترفیس متفاوتی داشت ولی هر نسخه از direct 3D آن کپی از قابلیتهای OpenGL بود این قضیه ادامه داشت تا اینکه بالاخره مایکروسافت توانست یک API جدید با ویژگی جدید خلق کنه و اون direct 8 بود که با قابلیت سایه زنی و راسی بود. در اینجا نه تنها نسخه direct 8 کمک بزرگی کرد بلکه پشتیبانی مالی اون هم کمک بسیاری بود. SGI که منبع درآمد آن فروش ایستگاهای کاری ۳D گرانقیمت بود ، در موقعیت ناجوری قرار گرفت و پیش بینی میشد که انفجار کارتهای ۳D برای بازیکنان باعث بشه تا ATI و Nvidia برای حرکت به سمت بازار حرفه ای آنهم با قیمت های فوق العاده
پائینی که SGI از عهده آن برنمی آمد ناکام بمونه. توسعه OpenGL هم بخاطر اختلافات جدی تر در بین طرفدارانش با مانع روبرو شد. ARB گروه مسئول تصویب توسعه API از شرکتهای بسیار متفاوت و درواقع رقیبی تشکیل شده بود، دستیابی به یک توافق درباره ویژگی های که باید به این API اضافه میشدند بسیار دشوار بود. ولی مایکروسافت منحصرا با ATI و Nvidia کار میکرد و در صورت عدم توافق بر روی یک موضوع ، از وزنه خود برای اعمال یک تصمیم گیری نهائی استفاده میکرد.

با ارائه directx 9 پیروزی قطعی مال مایکروسافت شد و توانست API خودش را با ابهت کامل به برنامه نویسان تحمیل کنه. تنها john carmack و افرادی که قابلیت انتقال Portability اصرار داشتند به OpenGL وفادار ماندند. ولی بازهم تعداد آنها کاهش پیدا کرد. البته برای خیز گرفتن مجدد OpenGL سرنوشت یاری کرد و اونهم مرورگرهای وب بود و همینطور گروه khronos بیش از دو سال کار OpenGL را دست گرفت که امیدی بر برپایی آن میداد. بالاخره khronos رسما OpenGL 3 را معرفی کرد و قرار بود که این API جلوی نسخه ۱۰ directx مایکروسافت بایسته و بازار نسل بعدی direct یعنی نسخه ۱۱ را خراب کنه ولی متاسفانه کارها طبق برنامه پیش نرفت و directx 10 واقعا قوی بود. تصویر زیر توسط Directx 10 رندر شده.

http://blogs.msdn.com/photos/phil_taylor/images/5255395/original.aspx

specularreflections

اگر قضیه را نخوام بیش از این توضیح بدم هم به خودم و هم به کسی که تا اینجا این مطلب وبلاگ را خوانده بی انصافی کردم چون این مطلب واقعا زیبا و عالی است و بخاطر همین در ادامه توضیح بیشتری میدم که چرا انقدر directx قدرتمند شده که قابلیت تکامل یافته ۳Dlabs در OpenGL 3 هم حریف directx نتوانست بشه. برای اینکه این مطلب را متوجه شوید باید مجددا به سال ۲۰۰۲ بریم که گفتم که OpenGL درحال از دست دادن بازار بود تا اون موقع هم حتی توضیح دادم با اینکه اینترفیس مایکروسافت فرق میکرد با OpenGL ولی هر قابلیت که در آن نحفته بود کپی از OpenGL بود. تا اینکه SGI شکست خورد و مایکروسافت هم با ارائه directx 9 پشتیبانی از یک زبان سایه زنی سطح بالا یعنی HLSL را معرفی کرد که OpenGL چیزی برای مقایسه با اون نداشت. اما یک توضیح کوچک راجع به SGI و تولید کنندگان کارت بدم که OpenGL از IRIS GL سرچشمه گرفته بود این API که از اول توسط SGI برای نمایش عملکرد سخت افزارهایش مورد استفاده قرار میگیرفت. برای یک مدت طولانی ati و nvidia هم از مدل راندوی sgi پیروی کردند و این به این معنی بود که OpenGL برای تولید کنندگان کارتهای گرافیک بسیار مناسب هست ولی مایکروسافت با ارائه shader ها همه چیز را به هم ریخت و GPU ها از حالت سنتی شون خارج شدند.

در آن موقع یک شرکت به نان ۳dlabs به یک تکامل تازه در openGL جهت اعمال برروی gpu های جدید پی برد. البته چیز عجیبی هم نبود چون ۳dlabs کارتهای بازی خودش را پس از Permedia 2 کنار گذاشت تا بربازار حرفه ای متمرکز بشه ولی باز هم OpenGL یک استاندارد واقعی حساب میشد که ۳dlabs قصد داشت اون و به سمت دوره ای تازه ببره که اولین مورد اون یک زبان shader سطح بالا به نام GLSL بود و این شرکت میخواست که این API را بازنگری کنه. بیشتر ویژگی های openGL روی کارتهای سه بعدی مدرن کارایی نداشت اما نیاز به سازگاری با نسخه های قبلی باعث میشد که تولید کنندگان آنرا پشتیبانی کنند. این قضیه باعث شد کار خیلی به هم گره بخوره یعنی نوشتن درایورها پیچیده میشد و API جدید برای برنامه نویسان گیج کننده میشد. بنابراین ۳dlabs خواستار مشخص شدن یک زیر مجموعه از عملکرد ها بود که اجرای کارآمد توسط GPU را تضمین میکردند و در عین حال ، ویژگی های اضافی یا منسوخ شده نیز باید حذف بشوند. این زیر مجموعه ، OpenGL 2.0 Pure نام گرفت. و برای برنامه نویسان نرم افزاری کاملا کاربردی و جدید در نظر گرفته شده بود. برای حفظ سازگاری ، مجموعه کامل ضمائم openGL 1x در openGL 2.0 قابل دسترس بود. متاسفانه پس از مباحث بی پایان در داخل ARB این طرح با عدم پذیرش مواجه شد و زمانیکه openGL نهایتا در دسترس قرار گرفت، تنها قابلیت پشتیبانی از GLSL به این API اضافه شده بود. تمام پیشنهادات دیگر ۳dlabs به فراموشی رفتند و openGL همچنان از API مایکروسافت عقب ماند.

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

مطالب مرتبط:

  • ساختمان گرافیک در ویستا و پیشرفت آن در ویندوز 7
    در اینترنت به هر حال مطالبی درباره ویندوز و بخصوص ویندوز 7 منتشر میشه که من به عنوان وبلاگ ویندوز باید چیزهایی بنویسم که تک باشه تا حفظ آبرو کنم. البته یه روزی میاد که همگان انقدر پیشرفت میکنند که یکی...
  • Directx 11 و مدل 5 Shader
    نمیدونم چی شده که باعث شده من فقط جمعه ها به فکر نوشتن Directx بیفتم ولی حالا بیخیال. در یکی از وبلاگها یک مطلب خوبی به نام Microsoft Web Platform Installer پیدا کردم برام جالب بود و در لینک پیوندهای ...
  • اجزا Directx 11 ابزار Tessellation
    در مطلب قبلی که راجع به Directx 11 نوشتم توضیحاتی بین دو direct یعنی 10 و 11 دادم و در همان مطلب یکی از خصوصیات آنرا گفتم. ولازم دونستم که اجزا نسخه 11 هم بگم. اگر مطلب چرا direct 11 مهم است را خوانده...
  • Microsoft DirectX
    یکی از بی ادعا ترین ابزارهای ویندوز directx بوده که بدون فکر کردن به رقیب بدون افتادن در بازی سیاستهای تجارت در بازار IT کار خودش را انجام میده و به کسی هم کاری نداره! directx که از ویندوزهای 95 و NT...
  • معرفی PCI Express 3.0
    فکر کنم در زمینه سخت افزار و تکنولوژی های سخت افزاری همیشه من نفر اول بودم و ندیدم هرموقع تکنولوژی جدید بیاد توی سایتهای فارسی زبان ازش چیزی نوشته بشه مگر اینکه بعدا از خارجیها کپی بشه. در گوگل جستجو ...
  • چطوری در لبتاپها، بین دو کارت گرافیک سوئیچ کنیم؟
    این مطلب بر اساس نظر امید بوجود اومد که چطوری در لبتاپهایی که دو کارتگرافیک دارند بین آنها سوئیچ کنیم. امروز تکنولوژی جدیدی وارد لبتاپها شده اونم اینکه بخاطر مصرف برق کمتر دو کارت گرافیک دارند مثلا یه...
  • آیا directx 11 همان نسخه 10.1 است؟
    آنچه که خودم شخصا و nVIDIA و طرفدارانش باور داریم اینه که directx 11 نسخه پیشرفته directx 10.1 است. ولی مخالفان میگویند که directx 11 همان 10.1 نیست و بسیار کارمدتر است. مخالفان nVIDIA میگویند که nVID...
  • OpenGL به موفقیت جدید رسید! آیا جنگ دوباره آغاز میشود؟
    روزی روزگاری در همین وبلاگ صحبت از شکست openGL کردیم در همان مطلب هم به این قضیه پرداختم که طرفدارانش سعی دارند آن را زنده نگه دارند تا به تاریخ نپیوندد ولی الان تازه ترین خبر از openGL 3.2 منتشر شد و...

در مورد نویسنده

Microsoft Certified System Engineer, Microsoft Certified IT Professional, Cisco Certified Network Associate, Certified Wireless Network Administrator

بدون نظر در "چرا OpenGL از Directx شکست خورد؟"

  1. وحید فروردین ۱۳, ۱۳۸۸ در ۱۲:۲۷ ب.ظ · پاسخ دادن

    علی جون دمت گرم
    من که خیلی حال کردم خیلی جالب بود
    کاش منبع خبر رو هم میگفتی
    به هر حال دستت درد نکنه و خسته نباشی

    مرورگر این کاربر Unknown Unknown سیستم عامل این کاربر Unknown Unknown
  2. وحید فروردین ۱۳, ۱۳۸۸ در ۱۲:۲۸ ب.ظ · پاسخ دادن

    ببخشید دوباره مزاحمت شدم
    میشه directx10 رو تو xp هم استفاده کرد
    مشکلی ایجاد نمیکنه چون اون با ۹ برنامه ریزی شده
    البته خیلی ها رو دیدم ۱۰ رو تو xp نصب کردن چطور ممکنه؟

    مرورگر این کاربر Unknown Unknown سیستم عامل این کاربر Unknown Unknown
  3. علی مختاری فروردین ۱۳, ۱۳۸۸ در ۱۲:۲۸ ب.ظ · پاسخ دادن

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

    مرورگر این کاربر Unknown Unknown سیستم عامل این کاربر Unknown Unknown
  4. hami مرداد ۱۲, ۱۳۸۸ در ۹:۲۹ ق.ظ · پاسخ دادن

    من متاسفانه با نظر شما موافق نیستم در حال حاظر ps3 بر پایه opengl و xbox 360 بر پایه directx خب خودتون بازیهاش رو با هم مقایسه کنید

    مرورگر این کاربر Unknown Unknown سیستم عامل این کاربر Unknown Unknown
  5. اشکان آبان ۱, ۱۳۸۸ در ۵:۱۹ ب.ظ · پاسخ دادن

    سلام
    ببخشید منظور بدی ندارم ولی باید بگم تمام اون ویژگیهایی که گفتی تو openGL هست و این چیزی که می گی شکست درست نیست چون کلا این دو تا با هم تفاوت دارند.
    روی سیستمهای بر پایه ی ویندوز directx از نسخه ی ۹ به بعد ۳۰ درصد سریعتر از OpenGL کار می کنه یعنی شما باید همه ی بازیها رو رو ویندوز با directx نوشت. ولی directx رو platformهای دیگه اجرا نمی شه و در زمانهایی هم که رندر در runtime انجام نمی شه شما می تونید از OpenGL استفاده کنید. تمام مودلهای شیدر هم با هم جلو می رند یعنی هر ویژگی رو که یکی می ذاره اون یکی هم می ذاره.
    شما می تونید به سایت ungine.com برید و دموهای اونها رو بگیرید و با dx9 و dx10 و openGL رو سیستمتون تست کنید. خیلی راحت می تونید نتیجه رو ببینید.
    به من ایمیل بزنید بیشتر توضیح می دم ashkan_gc@yahoo.com

    با تشکر
    http://gamemaker.mihanblog.com

    مرورگر این کاربر Unknown Unknown سیستم عامل این کاربر Unknown Unknown
    • علی مختاری آبان ۱, ۱۳۸۸ در ۱۰:۵۷ ب.ظ · پاسخ دادن

      دوست من ممنون از توضیحات
      من بیشتر منظورم روی ویندوز و گسترش بود. البته شکست به معنی منقرض شدن نبود مطلب جدیدی نوشتم درباره موفقیت جدید opengl درباره شیدر شاید نظرتون را جلب کنه.
      توضیحات بیشتر را در انجمن جدید که تاسیس کردم مکان خوبی است برای همین چیزها ساختم میتونید توضیح بدید خوشحال میشم و استفاده میکنم.
      http://www.mywindows.ir/forum

      مرورگر این کاربر Unknown Unknown سیستم عامل این کاربر Unknown Unknown
  6. کیوان آبان ۲, ۱۳۸۸ در ۷:۲۳ ب.ظ · پاسخ دادن

    سلام دوستان اگه چیزی در مورد تفاوت direct x با open glدارید لطفا برام ایمیل کنید
    k1.sobhany@yahoo.com

    مرورگر این کاربر Unknown Unknown سیستم عامل این کاربر Unknown Unknown
    • علی مختاری آبان ۲, ۱۳۸۸ در ۸:۱۹ ب.ظ · پاسخ دادن

      من توی همین سایت درباره openGL چند مطلب نوشتم توی کادر search اسمش را بنویس شاید گیر بیاری.

      مرورگر این کاربر Unknown Unknown سیستم عامل این کاربر Unknown Unknown
  7. OpenGL 3.2 آذر ۲۶, ۱۳۸۸ در ۳:۴۳ ق.ظ · پاسخ دادن

    یک نگاهی به سایت nvidia قسمت cool stuff بکنید همشون openGL هستند خودتون متوجه میشین opengl قویتره یا Directx

    مرورگر این کاربر Unknown Unknown سیستم عامل این کاربر Unknown Unknown

بازتاب‌های مربوط به این پست

  1. OpenGL به موفقیت جدید رسید! آیا جنگ دوباره آغاز میشود؟ | ویندوز من

یک نظر بدید