مشاهده نسخه کامل
: DirectX یا XNA مسئله این است!
lord arthas
11-03-2012, 18:39
DirectX یا XNA مسئله این است!
از یک طرف XNA اسون تر رفرنس بیشتری داره از طرفی DirectX رندر عالـــــی تر و قابلیت های باحال تری داره
شما راهنمایی کنید... کدام؟!:46:
توجه اینکه بیاین بگین هیچ کدام خلاف قوانین تاپیکه :31:
توجه لطفا افراد با تجربه پاسخ بدن
احسان , پرویز , god of war 2 , پیام منتظرم ها...
من که رک بگم XNA کار نکردم تا حالا ولی این رو بدون که DX فقط تو Geometry shader های حرفه ای و پیچیده ممکنه تغییری در ساختار طراحیت ایجاد کنه که حالا حالاها به کارت نمیاد.
در کل DX رو با یه انجین توپ استفاده کنی میتونی خیلی کارای خوبی انجام بدی,در واقع به نظرم این حرفت مثل قضیه همون Unity یا UDK هست که هر کدوم یه مزیت هایی دارن و هیچ وقت بینشون نمیشه با قاطعیت یکی رو انتخاب کرد.
lord arthas
11-03-2012, 21:15
اخه از XNa هم خوشم میاد....از انجین نویسی بیشتر پرویزم با DirectX نوشته بود Lian رو چجوریاست؟! ببین مثلا از ارزو هامه که Ogre رو گشترش بدم
god of war 2
11-03-2012, 21:38
سلام.
پیشاپیش سال نو رو به تمام دوستان و اعضای این انجمن تبریک میگم[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ](از این تریبون استفاده کردم[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] به این دلیل که شاید دیگه چند وقتی نتونم بیام تو انجمن)
خوب این پست هم تمام نظر بنده.(بیشتر بخاطر اینکه اسم منو هم تو پست اول نوشتید گفتم اگر جواب ندم یکم بی احترامی میشه)
------
سوالی که پرسیدید میشد یکم کاملتر باشه اگر میگفتید برای چه پلتفرمی (Xbox - PC - Windows Phone 7 - Zune - البته منظورم از PC سیستم عامل Wndows هست) منظورتون هست یکم و راحت تر هم میشد جواب داد.
از نظر اجرای بازی روی پلتفرم های مختلف(البته تو این توضیح فقط Xbox و PC رو در نظر میگیرم): برای Xbox فقط یک گزینه موجود هست و اون هم XDK یا همون Xbox Development Kit هست (یک add-on برای گسترش دهندگان Xbox) که انجین هایی هم که قابلیت خروجی Xbox دارن مثل Unreal از همین مورد استفاده میکنند.
اما برای PC شما میتونید از هر دو گزینه XNA و DirectX استفاده کنید که انتخاب هرکدوم به پارمتر های مختلفی برای تیم سازنده بازی برمیگرده.یکی از مواردی که میشه مثال زد اینه که ممکنه هدف تیم ساخت بازی برای هر دو پلتفرم Xbox و PC باشه که در اینصورت باز دو راه دیگه پیش روی خود دارند یکی اینکه کل ساختارشونو برا پایه XNA پیاده کنند که هم قابل اجرا بر روی PC هست و هم پورت کردن اون روی Xbox بسیار راحت تر و کم هزینه تر هست.راه دوم که بیشتر برای پروژه های سنگین که نیاز به استفاده از قدرت کامل سخت افزار دارن اینکه که نسخه PC رو روی DirectX پیاده میکنند و برای Xbox اونو روی XNA پورت میکنن (توابع در هر دو معمولا شبیه هم هستند) که هزینه بیشتری نسبت به مورد قبلی داره اما در نهایت خروجی بهتر و با کیفیت تری حداقل برای نسخه PC بدست میاد.
از نظر سبک بازی و مدت زمان مصرفی: معمولا بازیهای دو بعدی یا بازیهای سه بعدی کم حجم و سبک با XNA نوشته میشن که دلایل مختلفی داره.یکی این که XNA خیلی از چیزهای لازم برای ساخت یک بازی رو در خود جای داده که باعث میشه سرعت پیشرفت کار زیاد بشه.دلیل دیگری که میشه مثال زد سطح بالا بودن XNA نسبت به DirectX هست یعنی برنامه نویس در استفاده از XNA فوق العاده راحت تر هست تا اینکه با Api های سطح پایین DirectX کار کنه.دلیل دیگر نیاز نداشتن به کارایی بالا سخت افزار در بازی های دو بعدی و کم حجم.و ...
از نظر کارایی و ساختار: چند وقت پیش که داشتم یک کلاس Input در DirectInput 8 برای یک انجین مینوشتم متوجه شدم که نمیشه از قابلیت شوکر های دسته استفاده کرد حتی نمیشه از دسته های بازی Xbox استفاده کرد (البته شاید پورتی برای این مورد امده باشه اما من مطلع نیستم) و تنها راه چاره استفاده از Xinput بود. این یک مثال کوچیک از کارایی های هر دو هست البته ممکنه در نسخه های بعدی DirectX این مشکل برطرف بشه ولی متاسفانه از DirectInput 8 به بعد micro$oft در حال گسترش Xinput هست.
مورد دیگری که در XNA وجود داره یک حلقه سرخود یا built-in هست که در حقیقت همون game loop یا main loop بحساب میاد که مشابه اون در DirectX وجود نداره و باید توسط برنامه نویس پیاده سازی بشه.(به نظر من داشتن حلقه سرخود یک محدودیت برای برنامه نویس بحساب میاد شاید برنامه نویس بخواد تمام ساختار برنامه یا بازیشو خودش با توجه به سلیقه خودش طراحی کنه)
همونطور که میدونید XNA معمولا توسط زبان #C استفاده میشه ولی برای DirectX معمولا از زبان ++C استفاده میکنند و یک مشکلی که این وسط وجود داره و یک کار برنامه نویس رو سخت میکنه اما از طرفی هم به اون قدرت مانور میده اینه که در زبانی مثل #C سیستمی به نام Garbage -collection تعبیه شده که بصورت اتوماتیک مقادی حافظه ای که توسط برنامه نویس گرفته شده رو در مواقعی که لازم نیست آزاد میکنه اما در ++C چنین چیزی نیست و برنامه نویس باید مراقب حافظه هایی که بصورت پویا میگیره و یا اشارگر ها باشه ولی به نظر من این یک قدرت مانور برای برنامه نویس هست که در #C یکم محدود شده و برنامه نویس نمیتونه مستقیم به حافظه دسترسی داشته باشه.البته میتونید از DirectX به همراه #C نیز استفاده کنید اما دچار افت سرعت و کارایی نسبت به نمونه مشابه در ++C میشید.
پسوند فایل ها نیز یک نمونه دیگر از تفاوت DirectX و XNA هستند که میتونید برای جزئیات بیشتر خودتون یک جستجویی بکنید
و ...
از نظر سرعت و قدرت: خوب همونطور که میدونید XNA میشه گفت یک رو برداری از DirectX بصورت مدیریت شده بحساب میاد که هر وقت نام مدیریت شده در محصولات Micro$oft به گوشتون خورد بدونید که محدودیت هایی از نظر قدرت و کارایی و سرعت نسبت به نسخه مدیریت نشده (در اینجا DirectX) داره.پس از این نظر میشه گفت DirectX تقریبا نوعی پدر برای فرزند خود XNA بحساب میاد.
نکته دیگری که هست اینه که برنام هایی که بصورت مستقیم و توسط زبانی مثل ++C از DirectX استفاده میکنند در نهایت بصورت Native کامپایل میشن یعنی موقع اجرا هیچ واسطه ای میان اون برنامه و CPU و یا GPU وجود نداره ولی در XNA چنین نیست و کل برنامه در یک محیط زمان اجرای مدیریت شده اجرا میشه.
فکر کنم تا همینجا کافی باشه.امیدوارم که بدردتون بخره.
موفق باشید
lord arthas
11-03-2012, 23:55
سلام , مرسی از جواب دقیقت راستش با این اوصاف فک کنم برم سراغ XNA بهتر باشه چرا؟!
-من سنم کمه ریاضیات چیز زیادی هنوز نمیدونم اونقد
-دایرکت ایکس پیچیدست
-رفرنس هاش کمن ( من از انگلیسی از فارسی بیشتر خوشم میاد منظورم کلیه)
اگه نظر مخالف دارین بگین لطفا
god of war 2
12-03-2012, 19:26
رفرنس و مثال برای هردو به اندازه کافی موجود هست و خیالتون از این بابت راحت باشه.
lord arthas
12-03-2012, 19:47
میشه لینک بدی؟!
در مورد ریاضیات چی؟!
god of war 2
12-03-2012, 20:40
یه سرچی بکنید البته قبلش باید موضوع سرچتون مشخص باشه مثلا:
initializing Direct3D
برای ریاضیات هم به همین صورت.
البته پیشنهاد میکنم از یک کتاب کمک بگیرید که قدم به قدم راهنمایی کرده باشه.
میتونید به انجمنی که آدرسش در امضای بنده هست هم مراجعه کنید که شامل توضیحات فارسی در رابطه با DirectX هست.
برای XNA هم در همین انجمن در بخش برنامه نویسی Net. یک تاپیک برای آموزش XNA وجود داره.
lord arthas
12-03-2012, 22:01
نه یک رفرنس عالی برای XNA پیدا کردم :31:
نه منظورم اینه که من سنم 14ست بعد گیر نمیکنم جایی؟
god of war 2
12-03-2012, 23:38
نه منظورم اینه که من سنم 14ست بعد گیر نمیکنم جایی؟
نه.اتفاقا من هم وقتی شروع کردم تقریبا هم سن شما بودم :31:
saeiddddd2010
13-03-2012, 17:23
من شنيدم از اون جايي كه xna زياد طرفدار نداره ماكروسافت ديگه اون رو ادامه نميده
Armin060
20-03-2012, 19:31
من شنيدم از اون جايي كه xna زياد طرفدار نداره ماكروسافت ديگه اون رو ادامه نميده
مثل اینکه اره. شایعات زیادی هست که میگه کلا .net تو windows 8 حذف میشه چه برسه به xna. ( البته شایعه که چه ارز کنم که کنفرانش windows 8 خود micorost اعلام کرد، البته نه مسقیم ولی احتمالش 50% که حذف بشه )
نظر کارایی و ساختار: چند وقت پیش که داشتم یک کلاس Input در DirectInput 8 برای یک انجین مینوشتم متوجه شدم که نمیشه از قابلیت شوکر های دسته استفاده کرد حتی نمیشه از دسته های بازی Xbox استفاده کرد (البته شاید پورتی برای این مورد امده باشه اما من مطلع نیستم) و تنها راه چاره استفاده از Xinput بود. این یک مثال کوچیک از کارایی های هر دو هست البته ممکنه در نسخه های بعدی DirectX این مشکل برطرف بشه ولی متاسفانه از DirectInput 8 به بعد micro$oft در حال گسترش Xinput هست.
از نسخه ی 8 دیگه DirectInput و DirectSound توسعه داده نمیشه ولی نسخه ی 8 تو DX9 SDK هست ولی تو DX 10 11 SDK کلا حذف شده و از XInput و XACT و XAudio 2 استفاده میشه.
در مورد ریاضیات چی؟!
ریاضیات هم تو XNA هست هم تو DX البته تو DX سطحش بالاتره ولی کلا ریاضیش چیز خاصی نداره واسه شروع و تو موارد حرفه ای یه مقدار سخت تر میشه.
میشه لینک بدی؟!
غیر از مطالب زیادی که تو سایت های مختلف ریخته MSDN منبع خوبی هم برای DX و هم XNA هست و کاملا همه چیز رو پوشش داده. و البته منابعی که برای DX وجود داره الان خیلی بیشتر از xna هست.
اگر می خوای تا عمر داری ادامه بدی فرقی نداره کدوم رو انتخاب می کنی اخرش همه رو یاد میگیری. ولی اگر نه همینجوری واسه صرف وقت میخوای برو سراغ xna.
sajjad_3011
04-04-2012, 06:47
نه.اتفاقا من هم وقتی شروع کردم تقریبا هم سن شما بودم :31:
==============
دوست عزیز مطالبی که نوشتی مفید بود
اما به نظرم به اون رفیق 14 سالمون داری اشتباه آدرس میدی
طبق مشکلاتی که داشتم به نظرم نباید مستقیما سمت برنامه نویسی رفت
نباید از همون اول در گیر جزئیات شد
باید ابتدا help نرم افزار Quest3d وفیلم های در این مورد رو از yotube دید
و همینطور video های موجود در quest3d.org رو
با وجود اینکه Quest یکی از بهترین موتورهای بازی هست و حتی از یونیتی هم بهتره هنوز خیلیا راهو بیراهه میرن
===
بهتره مستقیما کار کردن با یه موتور مثل Quest رو یاد بگیری و play کردن انیمیشن ها به طور real-Time از طریق کانالها و این مباحث رو یاد بگیری
بعدش بیای بگی openGL یا DirectX.
==
آدم هرچقدر توانمند باشه نباید درگیر جزئیات بشه و بخواد همه چیزو از صفر با DirectX بسازه
مثل این میمونه که بخوای خونه بسازی طرف میگه با بلدوزر کار کن من بگم نه با یه بیل میام خونمو میسازم
اونوقت چی میشه ................... !
=====
پس کلا دوستان رو روشن کنم از کد بیاید بیرون کد نویسی وقتی مطرح هست که توی موتور بازی اونو بکار ببریم.
در حال حاضر هم این انجمن یکی از بهترین انجمن هایی هست که دیدم
در کل از شما دوستان از صمیم قلب تشکر می کنم و امیدوارم همتون به آرزوهاتون برسید
همونطور که خودم هم در ابتدای راه هستم و از همتون بی سواد ترم:11:
Armin060
04-04-2012, 12:14
دوست عزیز مطالبی که نوشتی مفید بود
اما به نظرم به اون رفیق 14 سالمون داری اشتباه آدرس میدی
طبق مشکلاتی که داشتم به نظرم نباید مستقیما سمت برنامه نویسی رفت
نباید از همون اول در گیر جزئیات شد
باید ابتدا help نرم افزار Quest3d وفیلم های در این مورد رو از yotube دید
و همینطور video های موجود در quest3d.org رو
با وجود اینکه Quest یکی از بهترین موتورهای بازی هست و حتی از یونیتی هم بهتره هنوز خیلیا راهو بیراهه میرن
===
بهتره مستقیما کار کردن با یه موتور مثل Quest رو یاد بگیری و play کردن انیمیشن ها به طور real-Time از طریق کانالها و این مباحث رو یاد بگیری
بعدش بیای بگی openGL یا DirectX.
==
آدم هرچقدر توانمند باشه نباید درگیر جزئیات بشه و بخواد همه چیزو از صفر با DirectX بسازه
مثل این میمونه که بخوای خونه بسازی طرف میگه با بلدوزر کار کن من بگم نه با یه بیل میام خونمو میسازم
اونوقت چی میشه ................... !
=====
پس کلا دوستان رو روشن کنم از کد بیاید بیرون کد نویسی وقتی مطرح هست که توی موتور بازی اونو بکار ببریم.
در حال حاضر هم این انجمن یکی از بهترین انجمن هایی هست که دیدم
در کل از شما دوستان از صمیم قلب تشکر می کنم و امیدوارم همتون به آرزوهاتون برسید
همونطور که خودم هم در ابتدای راه هستم و از همتون بی سواد ترم
چی شده فکر کنید directx و opengl یعنی صفر؟
god of war 2
04-04-2012, 13:08
دوست عزیز مطالبی که نوشتی مفید بود
اما به نظرم به اون رفیق 14 سالمون داری اشتباه آدرس میدی
طبق مشکلاتی که داشتم به نظرم نباید مستقیما سمت برنامه نویسی رفت
نباید از همون اول در گیر جزئیات شد
باید ابتدا help نرم افزار Quest3d وفیلم های در این مورد رو از yotube دید
و همینطور video های موجود در quest3d.org رو
با وجود اینکه Quest یکی از بهترین موتورهای بازی هست و حتی از یونیتی هم بهتره هنوز خیلیا راهو بیراهه میرن
===
بهتره مستقیما کار کردن با یه موتور مثل Quest رو یاد بگیری و play کردن انیمیشن ها به طور real-Time از طریق کانالها و این مباحث رو یاد بگیری
بعدش بیای بگی openGL یا DirectX.
ببینید بنده اصلا هیچ پیشنهاد و یا بقول شما آدرسی ندادم و تنها کاری که کردم با توجه به اسم تاپیک فقط یک مقایسه کوچیک کردم تا یکم موضوع روشن بشه همین!(پستی هم که دادم بیشتر بخاطر این بود که ایشون (پارسا) از دوستان بنده هستن)
حالا هرکس میتونه به اختیار خودش هر راهی رو که دوست داره بره.
----------
یه سوالی هم اینجا برای من پیش امد اینه که شما چطور help برنامه ای مثل Quest رو برای شروع پیشنهاد کردی و اصلا مبحثی مثل کانالها (یا play کردن انیمیشن ها!!) رو چطور یک مبحث پایه در نظر گرفتی و با OpenGL و DirectX نسبت دادی؟
lord arthas
04-04-2012, 15:47
همونطور که خودم هم در ابتدای راه هستم و از همتون بی سواد ترم
دوست عزیز مرسی از راهنماییت ولی....:13:
اولاً Quest بیشتر یک موتور رندر ریل-تایم هست به جای انجین دوماً گویا شما زیاد تو انجمن نبودی و کلا زیاد تو کاره بازی سازی نبودی چرا که فکر میکنی من تازه کارم :) که در واقع 1 سالی میشه حرفه ای ( با هدف ) شروع کردم سوماً چی باعث شده حتا بتونی فکر کنی Quest از Unity بهتره؟ لطفا این قسمتو کامل توضیح بده
فکر کنم شما اون کتابی که به تازگی ( شایدم نه تازگی :31: ) برای کوئست ترجمه شده رو خوندی یا نمیدونم سرت گرمه همچین چیزی؟ محظ اطلاعتون باید بگم من هم با یونیتی هم با یو دی کی و هم با جی.ام کار کردم :)
و از همه مهمتر اگه کسی به فکر ساخت بلدزر نبود الان شما مجبور بودی با بیل خونتو بسازی :10:
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.