ورود

View Full Version : OpenGL و Unreal engine 3



pswin.pooya
چهارشنبه 12 خرداد 1389, 14:17 عصر
سلام

با توسعه های اخیر (دو ساله اخیر) OpenGL و هماهنگیهای که با دایرکت پیدا کرده (مثل نحوه مدیریت شیدرها) و بالاخره در پایان با انتشار نسخه 3 که اکثر موارد پیشین (شاید هم بعضی از نقاط قوت OpenGL) رو زیر پا گذاشت و OpenGL رو متحول کرد. نظر بسیاری از برنامه نویسان گرافیکی رو بخودش جلب کرد چون اون میتونست از تمامی امکانات دایرکت 11 (و 10) توی تمامی پلتفرم ها (لینوکس، مک و ویندوز - حتی ویندوز 95) بر خلاف دایرکت جوابگو باشه. و موارد زیادی مثل CUDA و OpenCL به راحتی باهاش هماهنگ می شدن
از طرف دیگه رقابت شدید کارد و پنیر ( nvidia و ATI/AMD) باعث معرفی الحاقی های فراوانی داخل OpenGL از طرف این دو شیدر که نتیجه اون انتشار 4 نسخه توی کمترا ز 1.5 سال گذشته بودش (وحتی بعد از انتشار نسخه 4.0 ویژگیهای نسخه بعد 4.1 اعلام شد و تلاشها برای آماده سازی اون شروع شدش)همین مساله باعث جلب نظر Epic شد و نظر اون رو برای ساخت رندرر OpenGL هم برای UE3 جلب کرد.
Epic معتقده که یکسری از امکانات سخت افزاری جدید مخصوص پلتفرهای سخت افزاری وجود دارن که دایرکت پشتیبانی نمی کنه اما اونها باعث افزایش سرعت میشن. پس توی این موارد استفاده از OpenGL که از الحاقیها به صورت مستقیم پشتیبانی میکنه میتونه موثر واقع بشه.

لازم به ذکر هستش که UE3 برای پلتفرهای دیگه مثل apple iPhone از OpenGL ES استفاده می کنه.

منبع:
http://www.geeks3d.com/20100110/epic-games-joins-the-development-of-opengl/

سپول
چهارشنبه 12 خرداد 1389, 15:25 عصر
از طرف دیگه رقابت شدید کارد و پنیر ( nvidia و ATI/AMD) باعث معرفی الحاقی های فراوانی داخل OpenGL از طرف این دو شیدر که نتیجه اون انتشار 4 نسخه توی کمترا ز 1.5 سال گذشته بودش
این جز نقاط ضعف هست نه نقاط قوت !!! یک API گرافیکی نباید به این سرعت تغییر کنه، این یعنی دیزاین مرتباً اشتباه هست و برنامه نویسان هم اعتماد لازم رو پیدا نمی کنند، و در نتیجه کار هم نمی کنند باهاش.
"الحاقی های فراوان" هم جز نقاط ضعف هست، چون هر شرکت سازنده کارت گرافیک یک چیز برای خودش تعریف می کنه و این API رو از استانداردی و همگنی در میاره، به اصطلاح شهر نو می شه.


همین مساله باعث جلب نظر Epic شد و نظر اون رو برای ساخت رندرر OpenGL هم برای UE3 جلب کرد.
unreal3 همیشه همه API هارو ساپورت می داد، و حتی Software renderer هم داشت، opengl هم همیشه داشت منتهی کسی ازش تو ویندوز استفاده نمی کرد، فکر کردی API ای که در بازی های PS3 استفاده می کنه چیه ؟
اون خبر هم که گذاشتی مال یک سال و نیم پیش هست، و هیچ کاری هم نکرده Epic

Apple هم حتی opengl 3.0 رو به طور کامل پشتیبانی نمی کنه چه برسه به 4.0

ATI هم هیچ وقت ساپورت قوی برای opengl نداشت و همیشه درایورهاش با مشکل مواجه بوده در این مورد و بر عکس با API directx ارتباط قوی و خوبی داره.

opengl 3 و 4 برای بازی سازی با تکنولوژی جدید اصلاً به قدرت DirectX نیست، مگر اینکه شما بخواهید ساپورت نصف و نیمه opengl رو در سیستم عامل های دیگه (که 20 % بازار هم نیستند، و 0% بازار بازیبازها چون تمام بازیبازها جز کنسول روی Windows بازی می کنند) به ضعف درایورها (ATI با کارت های جدیدش تقریبا بیشتر از نصف بازار رو در اختیار داره)، Extension های سر درد بیار، کمبود منابع به درد بخور در مورد 3.0 و 4.0 و ساپورت، عقب موندگی اخیر opengl از نظر تکنولوژی نسبت به DirectX ، رو ترجیه بدید.
اگه نظر شما این هست که لطفاً سعی نکنید با اخبار حق به جانب جو برنامه نویسای تازه کار اینجا رو تغییر بدید چون شرکت های درست و حسابی مطمئن باشید با directx11-10 بازی هاشون رو ساختند و خواهند ساخت. (dice frostbite engine, codemasters, rockstar games ، Crytek و بقیه، (فقط یک مثال از یک انجین جدید AAA بیار که با opengl 3.0 کار می کنه، 4.0 که هیچی)
در مورد i-phone و PS3 اینها هم معلومه با opengl ES می سازند که تقریباً برابر استاندارد سخت افزارهای DX9 هست.
کلا روی هر پلتفرمی اون API ای که بهتر هست رو انتخاب می کنند، روی PC هم مسلماً DirectX هست و فعلاً خواهد بود. حالا شما دائم برو سرچ کن تو گوگل "OpenGL is better than DirectX" هر چی گیر آوردی بیا اینجا بنویس !

pswin.pooya
چهارشنبه 12 خرداد 1389, 21:11 عصر
این جز نقاط ضعف هست نه نقاط قوت !!! یک API گرافیکی نباید به این سرعت تغییر کنه، این یعنی دیزاین مرتباً اشتباه هست و برنامه نویسان هم اعتماد لازم رو پیدا نمی کنند، و در نتیجه کار هم نمی کنند باهاش.
"الحاقی های فراوان" هم جز نقاط ضعف هست، چون هر شرکت سازنده کارت گرافیک یک چیز برای خودش تعریف می کنه و این API رو از استانداردی و همگنی در میاره، به اصطلاح شهر نو می شه.

در مورد اینکه یکریخت بودن OpenGL به هم بریزه اشتباه میکنی. (کاملا) در مورد GL مطلبی که صادقه اونم Core هستش. هر ویرایش OpenGL یکسری از الحاقیها رو میراه داخل خودش که هر سازنده مثل ATI با قبول ویرایش مجبور به رعایت کردن اون هستش. این ویرایش ها از طرف khrounus اعلام میشن که یه برد جامع هستش و لازمه بگم که یکی از پیشتازان ویرایش 4 بر خلاف گذشته ATI هستش. پس لازم نیست بگم که همه موارد رو رعایت کرده.

هر کارت گرافیک یکسری قابلیتهای منحصر به فرد خودش رو داره و اون از معماری اون پدید میاد. داخل OpenGL اگر الحاقی معرفی بشه و پسوند NV و یا ATI بگیره میگه که اون الحاقی فقط برای اون مدل طراحی شده اما اگر ARB بگیره یعنی برد ARB یا تمام سازنده ها تاییدش کردن و بعدا داخل ocre جا داده میشه.

ویرایشهای کم OpenGL توی بازههای زمانی نسبت به دایرکت دلیل به پایدار بودنش نسبت به اون بوده اما ویرایشهای جدید همه دلیلهای خاصی رو داشتن:

OpenGL 2.x - > افزوده شدن programable piple به OpenGL ( دیگه از الحاقی بودن خارج شد)
OpenGL 3.x -> حدف شدن fixed function
OpenGL 4.x -> افزوده شدن کانال جدید پردازشی که از شیدر مدل 5 ناشات میگیره.

چک کردن ویرایشها والحاقی ها داخل OpenGL مثل چک کردن قابلیتهای Device داخل دایرکت میمونه. فقط یه تفاوت کوچیک هستش که OpenGL تظمین میکنه که از تمامی ویرایشهای پیشین و الحاقی ها پشتیبانی کنه شما موقع ایجاد context میتونین ویرایش رو انتخاب کنید. (مثلا میخوایین حتی با وجود ویرایش 3 برنامه شما از ویرایش 2 استفاده کنه)

حالا بیا به قضیه یه جور دیگه نگاه کنیم. من شیدر مدل 4 رو برای بازیم لازم دارم و کارت یوزر و خودمم ساپورت میکنه. خب، شما توی دایرکت مجبوری که (یا حداقل اینجوری به نظر میاد) با DX 10 به بالا کار کنی و این یعنی ویندوز Vista به بالا میخوای و بازم یعنی که 90 درصد یوزرهاتو از دست میدی (فبهای 5) اما اگر با GL کار کنی یوزر حتی توی Win95 هم باشه میتونه برنامه رو اجرا کنه. پس فقط محدودیت میاد روی کارت گرافیک اما داخل دایرکت حتی به سیستم عامل هم محدود شدی.

در مورد مک باید بگم که قراره از این به بعد nvidia کارتهای گرافیکی اون رو تامین کنه که این مساله خودش برای ساپورت بی چون چرای ویرایشهای جدید کافیه. مک حالا بطور کامل از OpenGL 2 پشتیبانی میکنه و سیستمهای جدیدش میتونن از 3.x هم پشتیبانی بکنن.

تعصب بیخود روی دایرکت نداشته باش. من خودم شخصا ترجیح میدم که یه برنامه ببسازم که فقط با یه کامپایل مجدد روی همه پلتفرم ها (یا حداقل اکثر اونها) اجرا بشه. (چه نرم افزاری - مثل لینوکس و یا سخت افزاری ).

به نظر من OpenGL پایدارتر از دایرکت هستش.




ATI هم هیچ وقت ساپورت قوی برای opengl نداشت و همیشه درایورهاش با مشکل مواجه بوده در این مورد و بر عکس با API directx ارتباط قوی و خوبی داره.

اینکه ATI توی عرضه OpenGL 3.x عقب موندش بر میگرده به ساختار GPUهای اون که نمی تونستن از SM4 کاملا پشتیبانی کنن (که حالا میکنن) اما در مورد مشکل داشتنش با OpenGL باید بگم که بر عکس فکر میکنی پرفرمانس ATI توی GL از nvidia قویتر بوده. (به جزء دو ساله اخیر که یه مقدار از nv عقبتر موندش.) حتی ATI یه ماه زودتر از nv درایورهای OpenGL 4 رو بیرون داد.؟!


و 4 برای بازی سازی با تکنولوژی جدید اصلاً به قدرت DirectX نیست، مگر اینکه شما بخواهید ساپورت نصف و نیمه opengl رو در سیستم عامل های دیگه (که 20 % بازار هم نیستند، و 0% بازار بازیبازها چون تمام بازیبازها جز کنسول روی Windows بازی می کنند) به ضعف درایورها (ATI با کارت های جدیدش تقریبا بیشتر از نصف بازار رو در اختیار داره)، Extension های سر درد بیار، کمبود منابع به درد بخور در مورد 3.0 و 4.0 و ساپورت، عقب موندگی اخیر opengl از نظر تکنولوژی نسبت به DirectX ، رو ترجیه بدید.

برای این مستند بیار. تمامی الحاقیها، تمام ویرایش ها دارای مستند هستند که آدرس مستنداتشون هم معلومه و البته دارای کتاب هستن که بازم اسم کتاب معلومه (OpenGL Red book)


حالا شما دائم برو سرچ کن تو گوگل "OpenGL is better than DirectX" هر چی گیر آوردی بیا اینجا بنویس !

نمی دونم با چی یا با کی مشکل داری ولی پست اول من به همچین مطلبی اشاره نکرده. که کدوم یکی بهتره. حتی من اشاره کردم که GL توی شیدرها سعی کرده به DX نزدیک بشه. پس سعی نداشتم بگم که بهتره فقط دو جمله گفتم GL توی ویرایش جدید بهتر شده که همه این رو تایید میکنن (به جزء شما که حتی فکر نکنم با اون کار کرده باشی) و دومی اینکه به خاطر الحاقیهایی که توی DX ساپورت نمیشن (که دورف هم نیست) و باعث افزایش سرعت میشن GL میتونه یک گزینه خوب برای رندررها باشه (که اینم من نگفتم.)

تنها چیزی که می تونم بگم که من مرتبا geeks3d رو نگاه میکنم که به طور تصادفی امروز به آرشیو مراجعه کردم و این متن رو دیدم و به اشتراکش گذاشتم.

راستی
1. برای پلتفرمهایی مثل کنسولها از OpenGL ES استفاده میشه نه از OpenGL.
2. تمامی امکانات OpenGL 3.x و لبته چهار در قالب الحاقی داخل OpenGL 2.x ساپورت میشن پس گیم انجینها نیازی به ساپورت OpenGL 3 ندارن (مگر اینکه بخوان از دیزاین جدید استفاده بکنن).

سپول
یک شنبه 16 خرداد 1389, 17:46 عصر
آقا تو رو خدا کار این برنامه نویس های تازه به دوران رسیده رو نکن. که احساس می کنند چیزه جدیدی کشف کرده اند و همون رو بدون تجربه کافی میان همه جا ، جا بندازند.


تعصب بیخود روی دایرکت نداشته باش.
خیلی جالبه، شما فقط پست های خودت رو بخون توی این فروم ببین چندبار این بحث مسخره رو که چند سال هست بین برنامه نویسا حل شده رو پیش کشیدی و بحث "خفن بودن" opengl و بهتر بودن اون رو مطرح کردی. حالا اینجا توی جواب من به خبر حق به جانب شما به من می گی تعصب نداشته باش ؟ دمت گرم بابا

همون طور که من 100 بار قبل هم سر همین بحث ها توی این سایت به شما گفتم، مساله اینه که هیچ کدوم رو نمیشه گفت از اون یکی بهتره چون یک ابزار و فقط یک Api هستند و در پلتفرم های خودشون هست که مشخص می کنه کدوم برای برنامه نویسا بهینه تره، و در حال حاضر هم api غالب در هر پلتفرمی مشخص هست، در pc هم شما 100 تا خبر و مقاله قدیمی و جدید از سایت های Geeks4all، GeeksOfNewYork، GeeksAndFreaks پیدا کنی Api برتر directx هست.
برای برنامه نویسای حرفه ای هم مطمئن باش مانند من و شما نیست که فرقی بکنه Api، اونها هر کدوم که بهتر جواب بده و ساپورت و داکیومنت بهتری توی پلتفرم خودش داشته باشه استفاده می کنند. چون مثل من و شما نیستند که در خونه بشینند و واسه خودشون حال کنند، انتخاب اشتباه API خرج های سنگین و ضرر های سنگینی می تونه براشون داشته باشه.
که در ویندوز هم خودتون اگه نگران هستید می تونید برید تحقیق کنید تقریباً تمام موتور های جدید و قدیم رو تحت directx می نویسند. در ps3 هم opengl (چون چیز دیگه ای نیست) در xbox هم چیزی شبیه directx هست (چون باز هم چیز دیگه ای نیست). حالا شما بیا تما نکات منقی gl رو تبدیل به نکات مثبت کن و نکات مثبت رو تبدیل به یک معیار اصلی برای انتخاب api بکن.

مشکل شما اینه که نه تجربه کافی داری نه علم کافی و در نتیجه نظرتون برای خودتون قابل احترامه، و فقط خواهش من این بود که با این تیریپ پست ها که کم هم ندادی، نظر برنامه نویسای تازه کار رو که ممکنه روی چیزی مانند شما تعصب نداشته باشند، رو خراب نکنید. همونطور که من چیزی تا حالا راجع به "خفن" بودن directx نزدم و فقط جواب پست های تبلیغاتی شما رو دادم.


راستی
1. برای پلتفرمهایی مثل کنسولها از OpenGL ES استفاده میشه نه از OpenGL.
2. تمامی امکانات OpenGL 3.x و لبته چهار در قالب الحاقی داخل OpenGL 2.x ساپورت میشن پس گیم انجینها نیازی به ساپورت OpenGL 3 ندارن (مگر اینکه بخوان از دیزاین جدید استفاده بکنن).

خیلی ممنون،
راجع به شماره 1 که به من تذکرش رو دادید، مثل اینکه پست اول من رو نخوندید من quote از خودم می گذارم :

در مورد i-phone و PS3 اینها هم معلومه با opengl ES می سازند که تقریباً برابر استاندارد سخت افزارهای DX9 هست

در مورد شماره 2 هم که منظور من رو از ساپورت فکر کنم کلاً اشتباه برداشت کردی.

اینجور بحث ها می دونی معمولا مال کیا هست؟ دقیقا کسانی که به geek ها معروف هستند، مثلاً تعصب روی linux و دشمنی با مایکروسافت دارند یا تعصب روی Windows و کلاً هر محصولی که مایکروسافت می ده، انگار تیم فوتبال مورد علاقشون هست.

Nima_NF
دوشنبه 17 خرداد 1389, 20:57 عصر
حالا بیا به قضیه یه جور دیگه نگاه کنیم. من شیدر مدل 4 رو برای بازیم لازم دارم و کارت یوزر و خودمم ساپورت میکنه. خب، شما توی دایرکت مجبوری که (یا حداقل اینجوری به نظر میاد) با DX 10 به بالا کار کنی و این یعنی ویندوز Vista به بالا میخوای و بازم یعنی که 90 درصد یوزرهاتو از دست میدی (فبهای 5) اما اگر با GL کار کنی یوزر حتی توی Win95 هم باشه میتونه برنامه رو اجرا کنه. پس فقط محدودیت میاد روی کارت گرافیک اما داخل دایرکت حتی به سیستم عامل هم محدود شدی.

تذکر: من مطالب زیر را جهت آمار سخت افزاری باریکنان و OS آن ها قرار می دهم و به هیچ عنوان وارد بحث OpenGL vs DirectX نمی شوم.


اولین چیزی که از دید یک شرکت سازنده مورد بررسی قرار می گیرد آمار کسانی هست که بازی را خریداری می کنند و بابت آن پول می دهند یعنی کسی که یک بازی 50 تا 70$ خریداری می کند، نه کلیه سخت افزارهای کاربران و OS های موجود.

ماه قبل، Steam جدید ترین آمار خود را از سخت افزارهای کنونی کاربران خود منتشر کرد.

دقت کنید که Steam در هر لحظه بین 2 تا 2.5 میلیون بازیکن دارد و آمار کلی بیش از 25 میلیون بازیکن هست. Steam یا همان پلتفرم بازی آنلاین حاوی بیش از 1100 بازی و شامل بازی های زیر هست:
F.E.A.R / Warhammer / counter strike/ call of duty / left 4 dead و صدها مورد دیگر

ارائه این آمار ظرف این چند روز کل سایت ها را مشغول به خود کرد و برنامه نویسان حرفه ای بازی نظرات بسیار جالبی در مورد مشخص شدن مسیر خود دادند که خودتان می توانید با جستجو از اینترنت مطالعه کنید.

این آمار را می توانید ازاین لینک مشاهده کنید:
Steam Hardware Survey May 2010 (http://store.steampowered.com/hwsurvey/)

در صفحه فوق بر روی هر کدام از گزینه ها مانند OS Version کلیک کنید، نتیجه را برای تمامی سیستم عامل ها و سایر موارد می توانید مشاهده کنید.
طبق این آمار که شامل محبوب ترین و پر طرفدارترین بازی ها در کلوپ های بازی و همین طور منازل در دنیا هستند، 57.53% از افراد از ویندوز vista/7 استفاده می کنند و تنها 32.89% کاربر windows XP هستند.

پس اگر داریم در مورد بازی سازی حرف می زنیم اول باید مشخص کنیم، تیم مورد نظر قرار هست فقط برای ایرانی ها بازی بسازد، یا قرار هست سخت افزار های خریدارن در کل دنیا را نیز مدنظر قرار دهد. (هر چند که من به شخصه اعتقاد دارم هرگز با ساخت یک بازی صرفا فقط برای فروش در داخل کشور هرگز به هیچ جا نمی رسیم.)

pswin.pooya
چهارشنبه 19 خرداد 1389, 14:14 عصر
سپول:
من یه زمانی تعصب زیادی رو GL داشتم اما یه مدت هستش که این رو کنار گذاشتم یا حداقل کمتر شده. اما اینجا شما هستی که بحث رو بیخودی داری ربط میدی به برتر بودن. من توی این پست کوچیکترین اشاره ای به برتر بودن نکردم حالا چرا شما رو عصبانی کرده، نمی دونم؟ (که میای اینجوری پست میدی).

هیچ کدوم از مواردی که بالا اشاره نکردم اشتباه نبودن (که میگی تجربه تازه یا غلط) و برای همشون منبع دارم. اگر مورد اشتباهی هستش اشاره کنید وگرنه تور خدا بیخیال ما یکی بشید.