View Full Version : سرعت توابع
1485159
پنج شنبه 20 آبان 1389, 13:59 عصر
سلام
آیا استفاده از توابعی مانند glEnable و glPushMatrix و glTranslatef و ... به طور مداوم باعث کاهش سرعت میشه؟ اگه آره پس چاره چیه؟
amin1softco
پنج شنبه 20 آبان 1389, 17:55 عصر
قدیما پویا می گفت از کدهای انجین کوچول استفاده کنید کارائیی بهتری داره :متفکر:
1485159
پنج شنبه 20 آبان 1389, 18:51 عصر
قدیما پویا می گفت از کدهای انجین کوچول استفاده کنید کارائیی بهتری داره :متفکر:
نفهمیدم چی میگی!
amin1softco
پنج شنبه 20 آبان 1389, 20:41 عصر
ببین این توابع یک سری اعمال را روی ماترس واحد انجام می ده حالا این کوچول مثل اینکه اومده خودش این اعمال رو بهینه و شبیه سازی کرده البته من که سر از کارش در نیاوردم ایشالا پویا یا خودش بیاند به ما توضیح بدند ما هم مستفیض بشیم:بوس:
1485159
پنج شنبه 20 آبان 1389, 20:59 عصر
ببین این توابع یک سری اعمال را روی ماترس واحد انجام می ده حالا این کوچول مثل اینکه اومده خودش این اعمال رو بهینه و شبیه سازی کرده البته من که سر از کارش در نیاوردم ایشالا پویا یا خودش بیاند به ما توضیح بدند ما هم مستفیض بشیم:بوس:
منم میخوام.....
pswin.pooya
پنج شنبه 20 آبان 1389, 22:08 عصر
سلام
من خودم اومدم. استفاده از ماتریسها و دستکاری اونها به چند دلیل بهتر از استفاده از دستورات دستکاری اونها مثل glTranslatef هستش.
۱. بعضی وقتها لازمه که انیمیشنهایی رو مثل انیمیشنها اسکلتی پیاده سازی کنید که در این حالت بهتر هست که این ماتریسها رو خودتون محاسبه کنبد. (در بعضی موارد راه دیگه ای ندارین)
۲. توی ویرایشهای جدید OpenGL (از سه به یعد) از این دستورها پشتیبانی نمیشه و شما مجبورین که ماتریس رو خودتون بسازید.
۳. یکسری بهینه سازیهای سمت CPU رو میتونین انجام بدین که باعث افزایش سرعت و کمتر شدن کار GPU میشه. مثلا توی GPU ماتریس پروجکشن در نما مدل برای هر ورتکس ضرب میشه با اینکه برای یک شکل مثل یک میز حاصل این ضرب همیشه یکی هست پش شما می تونید یکبار این ضرب رو برای یک شکل انجام بدین (به جای اینکه برای هر ورتکس اون دوباره اون رو انجام بدین).
۴. یکسری دیگه از محاسبات مثل Frustum culling و یا موارد دیگه مثل تشخیص برخورد هستن که به این ماتریسها نیاز دارن
و ...
پس بهتره که در قالب یک کلاس واحد اینکار یکبار برای همیشه انجام بدین تا بتونین یکریخت بودن انجینتون رو حفظ کنید..
بهینه سازی سمت CPU ماتریسها خیلی سخته و شما باید مواردی مثل SSE4 و SSE2 رو یاد بگیرین. اما کدهای آماده ای موجود هستن که می تونید از اونها استفاده کنید.
ببین این توابع یک سری اعمال را روی ماترس واحد انجام می ده حالا این کوچول مثل اینکه اومده خودش این اعمال رو بهینه و شبیه سازی کرده البته من که سر از کارش در نیاوردم ایشالا پویا یا خودش بیاند به ما توضیح بدند ما هم مستفیض بشیم:بوس: هر جای سورس رو که متوجه نشدین بگین توضیح بدم.
amin1softco
جمعه 21 آبان 1389, 00:05 صبح
ببین زیر سیکل توضیح بده من خودم یه نموره گرافیک کار کردم ولی سر از کار این انجین کوچول در نیاوردم و قبلاً کامپایل شده بود و باید به صورت lib اول پروژه اضافش می کردیم ولی من این سورسو دیدم حالا اگه شما سورس انجین کوچول رو دارید بزارید تا همه استفاده کنند.
1485159
جمعه 21 آبان 1389, 07:58 صبح
۳. یکسری بهینه سازیهای سمت CPU رو میتونین انجام بدین که باعث افزایش سرعت و کمتر شدن کار GPU میشه. مثلا توی GPU ماتریس پروجکشن در نما مدل برای هر ورتکس ضرب میشه با اینکه برای یک شکل مثل یک میز حاصل این ضرب همیشه یکی هست پش شما می تونید یکبار این ضرب رو برای یک شکل انجام بدین (به جای اینکه برای هر ورتکس اون دوباره اون رو انجام بدین).
یا مثلا به جای انتقال با glTranslatef شکل رو به اندازه دلخواه جابجا کنم؟ مثلا x رو بیشتر کنم یا و..؟
هر جای سورس رو که متوجه نشدین بگین توضیح بدم.
سورس کجا ست؟
pswin.pooya
جمعه 21 آبان 1389, 10:48 صبح
سورس کجا ست؟
آدرس پروژه:
http://sourceforge.net/projects/kge/
browse آنلاین:
http://kge.svn.sourceforge.net/viewvc/kge/
هدر ماتریس:
http://kge.svn.sourceforge.net/viewvc/kge/Include/math/Matrix.h?revision=283&content-type=text%2Fplain
کد ماتریس (پیاده سازی):
http://kge.svn.sourceforge.net/viewvc/kge/Source/math/Matrix.cpp?revision=285&content-type=text%2Fplain
پیاده سازی ماتریس پروجکشن هم توی source/gfx/renderer*.cpp هستش.
amin1softco
جمعه 21 آبان 1389, 12:31 عصر
ای شانس پس اینی که من دانلود کردم که هیچی توش نیست اسمشم KocholGame0.1 این بود دریق از یک ماتریس :اشتباه:
1485159
جمعه 21 آبان 1389, 13:19 عصر
حالا چرا توضیحاتش فینگلیش هست؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.