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





صفحه اول انجمنها -> برنامه نويسي تخصصي DirectX و اصول برنامه نويسي تحت ويندوز -> مشكل در يك برنامه DirectX
 

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

مشكل در يك برنامه DirectX
نويسنده
پيغام
mostafa_cpp
مدیر انجمن
مدیر انجمن


تاريخ عضويت: شنبه 24 دي 1384
تعداد ارسالها: 488
محل سكونت: تهران


1 شنبه 27 فروردين 1385 - 12:58
پاسخ بصورت نقل قول
سلام

كسي ميتونه بگه مشكل اين برنامه جيه ؟ ( پشت قوري رو ميتونيم ببينيم ! )

http://www.files.bz/files/1701/other/p2.rar
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
sepul2
کاربر اخراج شده


تاريخ عضويت: 3 شنبه 10 آبان 1384
تعداد ارسالها: 105


1 شنبه 27 فروردين 1385 - 15:02
پاسخ بصورت نقل قول
مشکل اصلی توی تابع device->Clear هست
اين هم کد درست شده که در تابع render قرار دارد :
كد:

void render()
{
   D3DXMATRIX ry;
   static float y = 0.0f;
   D3DXMatrixRotationY(&ry,y);
   y+=0.01f;
      device->SetTransform (D3DTS_WORLD,&ry);

   // MAJOR FIX: you must clear the ZBuffer on each frame too !
   device->Clear (0,0,D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,D3DXCOLOR(0,0,0,0),1.0f,0);

   device->BeginScene ();
   device->SetMaterial(&mtrl);
   mesh->DrawSubset (0);
   device->EndScene ();
   device->Present (0,0,0,0);
   
}


در پايان برنامه (تابع cleanup ) يادتون رفته که mesh رو Release کنيد .
اشکالات ديگه ای هم داشت که در همون فايل درست کردم اگه می خواهی بهت ميل بزنم.

کلا با اينکه می دونم اين فايل فقط يک نمونه هست، يک مقدار تر تميز تر کدش رو بنويس و error control بهتری داشته باشه، يه جا هم که يک تکستچر لود کرده بودی که روی کامپيوتر من نبود

يک مورد مهم ديگه هم اينه که برنامه های اينجوری رو window mode درست کنيد نه fullscreen.
اينجوری از نظر debug کردن خيلی راحتتره
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
mostafa_cpp
مدیر انجمن
مدیر انجمن


تاريخ عضويت: شنبه 24 دي 1384
تعداد ارسالها: 488
محل سكونت: تهران


1 شنبه 27 فروردين 1385 - 19:04
پاسخ بصورت نقل قول
سلام

ممنون از اينكه وقت گذاشتيد ؛

نقل قول:
مشکل اصلی توی تابع device->Clear هست
اين هم کد درست شده که در تابع render قرار دارد :


وقتي zbuffer رو پاك ميكنم ؛ تصوير ميپره و چشمك ميزنه ، رد چرخش قوري هم روي تصوير ميمونه

نقل قول:
اشکالات ديگه ای هم داشت که در همون فايل درست کردم اگه می خواهی بهت ميل بزنم.


اگه لطف كني ممنون ميشم mostafa.solati@gmail.com


نقل قول:
کلا با اينکه می دونم اين فايل فقط يک نمونه هست، يک مقدار تر تميز تر کدش رو بنويس و error control بهتری داشته باشه، يه جا هم که يک تکستچر لود کرده بودی که روی کامپيوتر من نبود
يک مورد مهم ديگه هم اينه که برنامه های اينجوری رو window mode درست کنيد نه fullscreen.
اينجوری از نظر debug کردن خيلی راحتتره

حق با شماست ، خودم ميدونم كر و كثيف كد مينويسم Very Happy اون تكسچر هم همونطور كه خودتون گفتيد مربوط به تمرين بود ، يادم رفته بود پاكش كنم
چشم سعي ميكنم بهتر كد بنويسم
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
sepul2
کاربر اخراج شده


تاريخ عضويت: 3 شنبه 10 آبان 1384
تعداد ارسالها: 105


1 شنبه 27 فروردين 1385 - 19:12
پاسخ بصورت نقل قول
اونی که می گی احتمالا مربوط می شه به يکی از flag ها موقع ساختن device . به هر حال من کد تصحيح شده رو برات ميل کردم و روی کامپيوتر من درست کار می کنه.
فقط در کد جاهايی که //NOTE: نوشتم دقت کن

سپول
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
mostafa_cpp
مدیر انجمن
مدیر انجمن


تاريخ عضويت: شنبه 24 دي 1384
تعداد ارسالها: 488
محل سكونت: تهران


2 شنبه 28 فروردين 1385 - 10:29
پاسخ بصورت نقل قول
سلام

ممنون دوست من

دو تا سوال داشتم

1- كار تابع memset چيه ؟ چيزي ازش سر در نيوردم
2 - توابعي كه مقدار float ميپذيرن اگر روبروي آرگومانهاشون f قرار نديم چه اتفاقي ميفته
مثلا :
كد:

(0.5)foo


چه فرقي با ميكنه با؟

كد:

(0.5f)foo
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
sepul2
کاربر اخراج شده


تاريخ عضويت: 3 شنبه 10 آبان 1384
تعداد ارسالها: 105


2 شنبه 28 فروردين 1385 - 14:02
پاسخ بصورت نقل قول
کار memset تخصيص دادن يک مقدار به حافظه هست.
مثلا می خواهيد مقدار يک حافظه رو صفر کنيد از memset استفاده می کنيم که البته تابع ZeroMemory هم داريم ولی من خودم memset استفاده می کنم چون استاندارد C هست و مانند ZeroMemory مخصوص به پلتفرم ويندوز نيست.
توی MSDN هم توضيحات بيشتر مریوط به پارامتر هاش داده که پارامتر دوم همون مقداری هست که به يک بلوک از حافظه می خواهيد تخصيص داده بشه.

در مورد سوال دوم هم وقتی f پشت عدد اضافه می کنيد به کامپايلر می فهمونيد که اين يک عدد از نوع float هست ، اگه f رو نگذاريد کامپايلر عدد اعشاری رو double فرض می کنه و warning میده.

موفق باشيد
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
mostafa_cpp
مدیر انجمن
مدیر انجمن


تاريخ عضويت: شنبه 24 دي 1384
تعداد ارسالها: 488
محل سكونت: تهران


2 شنبه 28 فروردين 1385 - 16:42
پاسخ بصورت نقل قول
به عنوان سوال آخر ، چرا استفاده از تابع memset در نحوه نور پردازي تاثير داره ، يعني بدون استفاده از اين تابع نتيجه متفاوتي در نور پردازي بدست مياد

نقل قول:
موفق باشيد


همچنين
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
sepul2
کاربر اخراج شده


تاريخ عضويت: 3 شنبه 10 آبان 1384
تعداد ارسالها: 105


3 شنبه 29 فروردين 1385 - 00:06
پاسخ بصورت نقل قول
چون وقتی شما D3DLIGHT9 رو تعريف می کنيد، مقدار هايی که از قبل در اون محل از حافظه موجود بوده به متغير های اين Structure تخصيص داده می شه و اگه اونها رو صفر نکنيد همون مقدارها رو برای نور پردازی به D3D می فرستيد.
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
mostafa_cpp
مدیر انجمن
مدیر انجمن


تاريخ عضويت: شنبه 24 دي 1384
تعداد ارسالها: 488
محل سكونت: تهران


3 شنبه 29 فروردين 1385 - 19:02
پاسخ بصورت نقل قول
Laughing
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي نام كاربري در پيغامگير Yahoo
 

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


 
پرش به:  


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


unity3d

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