Contacts
صفحه اصلی پورتال | صفحه اصلی تالار | ثبت نام | اعضاء | گروه ها | جستجو | پرسش و پاسخ | فروشگاه الکترونیکی | خرید پستی بازی های کامپیوتری





صفحه اول انجمنها -> برنامه نویسی با زبان های C++ و Delphi و VB -> يك سوال در مورد Cpp + Windows + DirectX
 

ارسال يك موضوع جديد   پاسخ به يك موضوع ديدن موضوع قبلي :: ديدن موضوع بعدي

يك سوال در مورد Cpp + Windows + DirectX
نويسنده
پيغام
lord_akinak
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: شنبه 15 ارديبهشت 1386
تعداد ارسالها: 349
محل سكونت: Hell


1 شنبه 24 تير 1386 - 12:56
پاسخ بصورت نقل قول
سلام
وقتی با win32 می خوام یه پنجره بسازم این مراحل رو انجام می دم:
1 - RegisterClass ( WINCLASS ) with hInstance
2 - Create HWND
3 - Show Window

پنجره با موفقیت باز می شه و مشکلی نداره، اما سوالم اینجاست که برای Handle کردن Message های ویندوز یه متد به اسم WinProc می سازم ، که اسم اونو می دم به WINCLASS اما یه متد دیگه هم موقع کار با DirectX باید ساخته بشه که توی کتابم اسمشو گزاشته بود EnterMsgLoopو می گفت حلقه اصلی بازی اینجاست.
محتویات EnterMsgLoop
كد:

int d3d::EnterMsgLoop( bool (*ptr_display)(float timeDelta) )
{
     MSG msg;
     ::ZeroMemory(&msg, sizeof(MSG));

     static float lastTime = (float)timeGetTime();
   
     while(msg.message != WM_QUIT)
     {
           if(::PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
           {
                 ::TranslateMessage(&msg);
                 ::DispatchMessage(&msg);
           }
           else
           {
                 float currTime = (float)timeGetTime();
                 float timeDelta = (currTime -
                   lastTime)*0.001f;

                 ptr_display(timeDelta); // call display function
            
                 lastTime = currTime;
           }
     }
   
     return msg.wParam;
}


محتویات WinProc
كد:

LRESULT CALLBACK d3d::WndProc(HWND hwnd, UINT msg, WPARAM wParam,
  LPARAM lParam)
{
     switch( msg )
     {
     case WM_DESTROY:
           ::PostQuitMessage(0);
           break;

     case WM_KEYDOWN:
           if( wParam == VK_ESCAPE )
                ::DestroyWindow(hwnd);
           break;
     }
     return ::DefWindowProc(hwnd, msg, wParam, lParam);
}


لطفا توضیح بدید :
1 - فرق این دو متد در چیست ؟
2 - هر کدوم در چه مواقعی و از کجا احضار می شن ؟
3 - سازنده متد EnterMsgLoop رو برام تشریح کنید منظورش از اون سازنده چیه ؟
كد:

int d3d::EnterMsgLoop( bool (*ptr_display)(float timeDelta) )


با تشکر پیشاپیش !!!

_________________
And hell was so cold
All the vases are so broken
And the roses tear our hands all open
Mother mary miscarry
But we pray just like insects
The world is so ugly now
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
Kochol
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: شنبه 1 مرداد 1384
تعداد ارسالها: 298


4 شنبه 27 تير 1386 - 19:59
پاسخ بصورت نقل قول
سلام
اول از همه باید بگم که کتاب خیلی خوبی رو برای یادگیری دایرکت ایکس انتخاب کردی.

1. اون دو تا تابع بر می گرده به وین32 پروگرمینگ. تابع اولی حلقه اصلی برنامه هست که تمام کارهای مربوط به بازی اونجا قرار می گیرد و کاری که می کند این هست که اول چک می کند پیغام جدیدی برای پنجره اومده یا نه اگر نیومده بود تابع رندر را فراخوانی می کند.

تابع دوم هم که پیغام ها رو چک می کنه که اولیش مربوط به خروج شدن از برنامه مثل وقتی که دکمه x رو بزنند و بعدی هم چک می کند که کلید esc زده شده یا نه.

2. تابع اول که بعد از اینکه کارهای اولیه انجام شد توسط خود برنامه نویس صدا زده می شه و تا خروج برنامه تکرار می شه.

تابع دوم هم توسط سیستم عامل وقتی که پیغامی بود فراخوانی می شه.

3. این تابع ادرس تابع رندر رو می گیره که تو هر لحظه صداش بزنه به این کار می گن اشاره گر به تابع.

این هم یه مقاله برای اشاره گر به تابع.
http://wiki.gamedev.ir/doku.php?id=prog:cpp:%D8%A7%D8%B4%D8%A7%D8%B1%D9%87_%DA%AF%D8%B1_%D8%A8%D9%87_%D8%AA%D8%A7%D8%A8%D8%B9

_________________
Kochol Game Engine

[img]http://barnamenevis.org/forum/image.php?type=sigpic&userid=6875&dateline=1258101798[/img]
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
lord_akinak
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: شنبه 15 ارديبهشت 1386
تعداد ارسالها: 349
محل سكونت: Hell


4 شنبه 27 تير 1386 - 21:44
پاسخ بصورت نقل قول
بسيار ممنون كوچول جان
منتظر بودم خودت جوابم رو بدي كه دادي ....
از مقاله هم استفاده كردم....
اميدوارم بازم تو Cpp کمکم کنی....
موفق باشی ....

_________________
And hell was so cold
All the vases are so broken
And the roses tear our hands all open
Mother mary miscarry
But we pray just like insects
The world is so ugly now
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
salso
در حال رشد
در حال رشد


تاريخ عضويت: 5 شنبه 17 اسفند 1385
تعداد ارسالها: 29
محل سكونت: تهران


جمعه 29 تير 1386 - 18:58
پاسخ بصورت نقل قول
يك كتاب خدا براي سي پلاس پلاس و برنامه نويسي دايركت ايكس :

اينم لينكش:
http://rapidshare.de/files/36328672/Beginning_C___Game_Programming.rar

اينم يه چيز خداي ديگه :
C++ for Game Programmers (Game Development Series )

http://rapidshare.de/files/13756128/1584502274.zip


Embarassed

_________________
If you want to be understood , Listen ... .
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
lord_akinak
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: شنبه 15 ارديبهشت 1386
تعداد ارسالها: 349
محل سكونت: Hell


شنبه 30 تير 1386 - 16:31
پاسخ بصورت نقل قول
اين كتاب اصلا تو برنامه نويسي خدا نيست
من الكي 32 مگ رو دانلود كردم ( البته 1 ماه پيش )
چرند نوشته ....

_________________
And hell was so cold
All the vases are so broken
And the roses tear our hands all open
Mother mary miscarry
But we pray just like insects
The world is so ugly now
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

نمايش نامه هاي ارسال شده قبلي:   
ارسال يك موضوع جديد   پاسخ به يك موضوع    صفحه 1 از 1 تمام ساعات و تاريخها بر حسب 3.5+ ساعت گرينويچ مي باشد


 
پرش به:  


شما نمي توانيد در اين انجمن نامه ارسال كنيد.
شما نمي توانيد به موضوعات اين انجمن پاسخ دهيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن ويرايش كنيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن حذف كنيد
شما نمي توانيد در نظر سنجي هاي اين انجمن شركت كنيد


unity3d

بازگردانی به فارسی : علی کسایی @ توسعه مجازی کادوس 2004-2011
Powered by phpBB © 2001, 2011 phpBB Group
| Home | عضويت | ليست اعضا | گروه هاي كاربران | جستجو | راهنماي اين انجمن | Log In |