majnona_

كود دايركت اكس

39 ردود في هذا الموضوع

السلام عليكم

/////////////////

لدي مشكله حول كتابة كود دايركت اكس

حيث انني عندما اكتبه تاتني الرساله التاليه

3445.obj : error LNK2001: unresolved external symbol [email protected]
3445.obj : error LNK2001: unresolved external symbol [email protected]
3445.obj : error LNK2001: unresolved external symbol [email protected]
3445.obj : error LNK2001: unresolved external symbol [email protected]
3445.obj : error LNK2001: unresolved external symbol [email protected]
Debug/453.exe : fatal error LNK1120: 5 unresolved externals
Error executing link.exe.

وفي كود ثاني هذه الرساله

34.obj : error LNK2001: unresolved external symbol [email protected]
Debug/342.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

انا متاكد انني اكتبه بطريقه صحيحه وذلك لانني جربت ان اقوم بنسخ الكود الموجود في sdk ولصقه فتاتي هذه الرساله نفسها

ملاحظه:- انا اجرب الكود قبل نسخه ولكنه يعمل اما عندما الصقه في كومبلير جديد لا يعمل

ارجو حل لهذه المشكله...........

وشكرا ............

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ضع المثال بالمرفقات وساجربه.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

خطأ في الربط.

عليك ربط المشروع بال libs

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أهلا أخي

سأعطيك مثال عن طريقة الربط بالمكتبة

Project -> Settings -> Link

و في

Objects/library modules

ساجد

kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

قم بالإضافة لها d3d9.lib في النهاية أو البداية فقط تأكد بأنها منفصلة عن غيرها

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

3445.obj : error LNK2001: unresolved external symbol [email protected]

link the object files with winmm.lib

3445.obj : error LNK2001: unresolved external symbol [email protected]

3445.obj : error LNK2001: unresolved external symbol [email protected]

3445.obj : error LNK2001: unresolved external symbol [email protected]

link the object files with d3dx9.lib

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

////////////

هذا هو الجزء الثاني من اسئلتي :D :D

/////////////

عندي كم سؤال بخصوص Matrices, Transforms, and Rotations وارجو عدم تفشيلي

الاسئله هي

1- ما هو matrix وما علاقته ب Rotations ؟؟؟

2-

  D3DXMATRIX matWorld;

   D3DXMatrixRotationY( &matWorld, timeGetTime()/500.0f );

   g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );

أ- هنا في هذا الكود استعملنا &matWorld في الداله D3DXMatrixRotationY ولكن لماذا بدأ المثلث بالدوران

ما علاقة المثلث ب &matWorld انها مجرد تعريف D3DXMATRIX

ب- ممكن شرح اول برامتر في الداله SetTransform والذي هو D3DTS_WORLD ا معناه ولماذا نحتاجه وما هو البديل له ؟؟

3-

 D3DXMATRIX matProj;
   D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 640/480, 1.0f, 1000.0f );
   g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );

أ- ما هو اول برامتر في الداله SetTransform والذي هو D3DTS_PROJECTION ما معناه؟؟ وما هو البديل له ؟؟؟

ب- ما هو البرامتر الثاني في الداله D3DXMatrixPerspectiveFovLH والذي هو D3DX_PI/4

ج- هنا في هذه الداله D3DXMatrixPerspectiveFovLH برواسطة برامتراتها نستطيع ان نغير في حجم المثلث وهكذا

كيف ذلك ؟؟؟ مع انه لا توجد اي علاقه تربط بين المثلث والداله او بين المثلث و D3DMATRIX matProj

ملاحظه:- ارجو من الجميع الاستفاده من هذا الموضوع فانا اظن ان به كل مشكله سيواجهها مبتدء

شكرا ......

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

/////////////

الا يوجد احد من يرد على هذا الموضوع

اين انت يا gamedev4arab انت يا احمد صالح ......وغيرهم الكثير

ملاحظه لاحمد صالح:- احمد صالح اظن انك تعرفني .... انا من كان يزعجك دوما باسئلتي وكنت اذكر دائما كلمة ( اسمعني-اسمع)

هل تذكرتني؟؟؟

وشكرا 0............

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

هذه الأمور تحتاج كورس في الـ linear algebra, صعب شرحها هنا! مع العلم اني لا اعرف الكثير عنها, و لكن بشكل عام:

المتجه يمثل على شكل ماتركس عمودي به ثلاثة عناصر, لكن عادة يكتب بشكل افقي و تكتب فوقه رمز T للاشارة على أنه مقلوب

for example: [x y z ]T

الـ rotation matrix او بشكل عام, أي transformation matrix هو ماتركس عندما تضربه في الفكتور الأصلي, تحصل على الفكتور بعد الـ transformation.

مثلا (خلينا نتكلم عن بعدين فقط, يعني لوحة ثنائية الأبعاد)

على فرض عندنا لوحة ثنائية الأبعاد .. و تخيل ان عدنا نقطة موقعها (1,1) فهي في الجزء العلوي الأيمن من اللوحة, و الماتركس هو [1 1],

النقطة من الممكن ان نفكر فيها على أنها خط نقطة بدايته هي (0,0) و نهايته هو موقع النقطة.

الان لو قمنا بتدوير هذا الخط حول النقطة المركزية (0,0) مثلا 45 درجة لليسار, فسيصبح موقع النقطة هو (-1, 1) يعني الـ x = -1 و الـ y = 1

الـ rotation matrix هنا هو الـ matrix اللذي اذا ضربناه في [1 1] نحصل على [-1 1]

او بالأحرى, هو الماتركس اللذي لو ضربناه بأي ماتركس [x1 y1] فسنحصل على ماتركس جديد, هو نتاج تدوير هذا الماتركس حول النقطة المركزية 45 درجة الى اليسار.

طبعا عملية الضرب على الـ matrix عملية معقدة شوية (يعني ليست مجرد ضرب العناصر ببعضها).

لا ادري اذا كانت وصلت الفكرة أم لا, و لكن الفكرة هي انه لكل عملية تحويل للمتجهات, هناك matrix معين يقوم بهذا التحويل عند ضربه بالـ vector الأصلي. فهذه العملية (حسب ما اظن) مفيدة في انها تسرع العمليات الحسابية المتعلقة بالمتجهات.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

....................

لما لم تفهمو اسئلتي

انتم تجيبو على اسئله لا اريدها

انا فاهم منظوم الماتركس وهي مصفوفه ولنفرض انها 4*4

1 2 3 4

4 5 6 7

8 9 10 11

12 13 14 15

حيث ان الاول هو x والثاني هو y والثالث z اما الرابع فلا اعرف

المهم

هذا لا اريده انا اريد فقط الاجابه على اسئلتي

والتي منها هي

نحن ندور الماتركس( اي يوجد متغير لماتركس والدالة الدوران فيها برامترات تخص الماتركس فلماذا يدور المثلث مع اننا لم نربط

به اي شي مع الماتركس) ؟؟

هذه احد اسئلتي واهمها ومن ثم يوجد بعدها بعض الاسئله عن البرامترات

فارجو الاجابه عليها

وشكرا ...............

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

إجابة سؤالك

في الموضوع مرجع اسئلة دايركت اكس ... جاوبت عليه امس !

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
غدا إن شاء الله أجوابك على جميع أسألتك

السلام عليكم

اخي ارجو ان تضيف الى الشرح هذه الدالتان

  g_pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );

   
   g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE );

ما هو عملهن ولماذا نحتاجهن وما ك برامتر فيهن ؟؟؟

ملاحظه:- في المره السابقه ( في pdf كان شرحك ممتاز ولكنك لم تشرح بالضبط ما اردته انا ولهذا ارجو منك ان تقوم بالشرح الممتاز وليس باختصار)

وشكرا .........

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

المصفوفات تستعمل فى كل عمليات التحويلات المختافة.

لناخذ مثالا:

الكل يعلم ان DirectX يحتوى على ال Transformation and Lighting pipline .

ماذا يعنى هذا؟ . هذا يعنى ان اى نقطة (عندما اقول نقطة اقصد نقطة فراغية x,y,z ) تكون معرفة عند

احداثيات معينة . و تكون الكاميرا فى مكان ما. و يكون هناك اضاءة من مكان اخر.

لكى نستخلص المشهد الذى يمكن ان تراه العين اذا كانت مكان الكاميرا. يجب ان نقوم بخطوات عديدة.

1/ تخيل معى ان كل المجسمات التى قمت برسمها هى الان فى اماكنها الصحيحة. و الكاميرا موجودة الان

فى المكان الذى حددته انت لها. ماذا لو قمنا باذاحة الكاميرا و وضعناها فى النقطة 0,0,0, مع المحفظة

على الاماكن النسبية لبقية النقاط ( النقاط التى تمثل السموت لرسم الاجسام). هذه الازاحة التى سوف تطبق

على كل السموت يمكن انجازها بطريقتين : -

ا / طرح احداثيات الكاميرا من احداثيات كل نقطة طرح مباشر

ب/انشاء مصفوفة اذا تم ضربها بالمتجه الذى يحوى احداثيات النقطة, يمكن ان تنتج لنا الاحداثيات

الجديدة المزاحة.

على العموم DirectX يستخدم الطريقة الثانية.

2/ الان و بعد ان ازحنا كل السموت لنضع الكاميرا فى النقطة 0,0,0, بقى علينا ان ندير الكاميرا

حتى تنظر فى اتجاه ال Z فى الجذء الموجب منه. هنا يستوجب الامر ان ننشئ مصفوفة جديدة

يتم بناء عناصرها من قيم الزوايا التى تصنعها الكاميرا ( ان اردت الدقة جتا هذه الزوايا).

الان هذه المصفوفة و بطريق ما, عند ضربها بالمتجه الذى يحوى النقاط التى لم يتم تدويرها.

سوف تعطى متجه النقاط بعد التدوير.

يمكن ان تلاحظ معى بسهولة ان هناك ما يمكن ان يختصر.

دعنا الان نكتب بعض المعادلات.

افرض ان المصفوفة S هى التى سوف تقوم بعمل الازاحات للسموت الغير مزاحة تبعا للكاميرا.

~~~~~~~~~~~ R ~~~~~~~~~~ الدوران للنقاط المزاحة حتى نوجه الكاميرا الى النظر فى اتجاه +z

لنقل ان v يحمل قيمة نقطة غيرمزاحة,vs لنقطة مزاحة, vf هو الاحداثيات بعد الازاحة و الدوران.

vs = S* v

vf = R* vs

هنا يمكن التعويض عن vs كالتالى

vf = R * S * v

اليس هذا جميلا, لنقل ان المصفوفة C = R* S

اذن يمكن ان نكتب vf = C * v

المصفوفة C تادى كل من الازاحة و الدوران فى نفس العلمية.

من الجيد الان ان تعلم ان DirectX يقوم بحساب مصفوفتنا C من احداثيات

الكاميرا, و من النقطة التى تنظر اليها الكاميرا, و من الاتجاه المعامد للكاميرا.

DirectX يسمى هذه المصفوفة View Matrix

و يقوم هو باعدادها لك بدالة لا اذكر اسمها الان ( مع انها مشهورة) "سامحنى فقد طولت من DirectX"

بعد ان اعدت لك هذه المصفوفة يمكن ان تنوه انك تريد ان تستعملها. بالسطر التالى

pD3DDevice->SetTransform(D3DTS_VIEW,&ViewMatrix);

لقد ذكرت لك الطريقة التى يتم بها ال ViewTransformation سامحنى اذا كانت هناك اى اخطاء

يمكن ان تدرس كل من ال World Transformation و ال Projection Transformation

و هما فى غاية السهولة.

فى النهاية , سيكون من المفيد لك ان تقرا الكتاب

Introduction to Direct3D 9.0 programming for bigeners

اتمنى ان يكون الاسم صحيحا , لكن على كل الاحوال , هذا الكتاب موجدود تبع الكتب فى المنتدى.

اتمنى ان اكون قد اجبت, ولو على جذء من السؤال.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

لما لا تفهموني

..........

انا اشكركم على هذا الشرح ولكنه ثقيل علي اي انه صعب ان افهمه كمبتدء

انا اريد فقط شرح لاسئلتي

وشكرا ........

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

حسنا ارجو منك ان تعيد صياغة السؤال بصورة واضحة

و لو كنا نعرف الاجابة, سوف نوافيك بالرد إن شاء الله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
السلام عليكم

////////////

هذا هو الجزء الثاني من اسئلتي :D  :D

/////////////

عندي كم سؤال بخصوص Matrices, Transforms, and Rotations  وارجو عدم تفشيلي

الاسئله هي

1- ما هو matrix وما علاقته ب Rotations  ؟؟؟

2-

  D3DXMATRIX matWorld;

   D3DXMatrixRotationY( &matWorld, timeGetTime()/500.0f );

   g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );

أ- هنا في هذا الكود استعملنا &matWorld في الداله D3DXMatrixRotationY ولكن لماذا بدأ المثلث بالدوران

ما علاقة المثلث ب &matWorld انها مجرد تعريف D3DXMATRIX

ب- ممكن شرح اول برامتر في الداله SetTransform والذي هو D3DTS_WORLD ا معناه ولماذا نحتاجه وما هو البديل له ؟؟

3-

 D3DXMATRIX matProj;
   D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 640/480, 1.0f, 1000.0f );
   g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );

أ- ما هو اول برامتر في الداله SetTransform والذي هو D3DTS_PROJECTION ما معناه؟؟ وما هو البديل له ؟؟؟

ب-  ما هو البرامتر الثاني في الداله  D3DXMatrixPerspectiveFovLH والذي هو  D3DX_PI/4

ج- هنا في هذه الداله D3DXMatrixPerspectiveFovLH برواسطة برامتراتها نستطيع ان نغير في حجم المثلث وهكذا

كيف ذلك ؟؟؟ مع انه لا توجد اي علاقه تربط بين المثلث والداله او بين المثلث و D3DMATRIX matProj

ملاحظه:- ارجو من الجميع الاستفاده من هذا الموضوع فانا اظن ان به كل مشكله سيواجهها مبتدء

شكرا ......

هذه هي اسئلتي وليست سؤال واحد فقط

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بالنسبة لـ: D3DXMatrixRotationY

http://www.google.com/search?sourceid=navc...MatrixRotationY

D3DXMatrixRotationX(D3DXMATRIX *pOut, FLOAT angle)
D3DXMatrixRotationY(D3DXMATRIX *pOut, FLOAT angle)
D3DXMatrixRotationZ(D3DXMATRIX *pOut, FLOAT angle)

These three functions allow you to set up your matrix to rotate the object around one of the axis. You use the function you require and specify the rotation angle in radians. E.g. to rotate a object 180 degrees around the Y axis we could write:

D3DXMatrixRotationY(&matWorld,D3DX_PI);

D3DX_PI is a defined value for PI, PI is 180 degrees in radians. See the note at the end of this section about converting between them: Radians and Degrees

و

To create the x, y and z rotation matrices, we will use the DirectX functions D3DXMatrixRotationX, D3DXMatrixRotationY and D3DXMatrixRotationZ. The first parameter is a pointer to a D3DXMATRIX structure that will hold the rotation matrix, the second parameter is the angle to rotate in radians. The code snippet below, taken from our new Render method, shows these calls.  

//Create the rotation transformation matrices around the x, y and z axis
D3DXMatrixRotationX(&matRotationX, timeGetTime()/400.0f);
D3DXMatrixRotationY(&matRotationY, timeGetTime()/400.0f);
D3DXMatrixRotationZ(&matRotationZ, timeGetTime()/400.0f);  

هذا الفنكشن ياخذ مارتكس و يحوله الى rotation matrix بقدر الزاوية المحددة, و الزاوية هي البارامتر الثاني. و الزاوية هنا بمقياس الـ radians

اما الـ timeGetTime فلا أدري ما علاقته بالزاوية .. اعتقد انهم يستخدموه لكي تحصل على زاوية مختلفة في كل مرة تشغل فيها البرنامج.

أما SetTransform فأعتقد من الواضح انها تستخدم الماتركس للقيام بالدوران rotation

http://msdn.microsoft.com/library/default....etTransform.asp

IDirect3DDevice9::SetTransform Method  

--------------------------------------------------------------------------------

Sets a single device transformation-related state.

Syntax:

HRESULT SetTransform(          D3DTRANSFORMSTATETYPE State,
   CONST D3DMATRIX *pMatrix
);

Parameters:

State
[in] Device-state variable that is being modified. This parameter can be any member of the D3DTRANSFORMSTATETYPE enumerated type, or the D3DTS_WORLDMATRIX macro.
pMatrix
[in] Pointer to a D3DMATRIX structure that modifies the current transformation.

و الخيارات المتعلقة بالبارامتر الأول تجدها في اللنك (في الصفحة اعلاه) و هو هذا:

http://msdn.microsoft.com/library/default....rmstatetype.asp

D3DTS_VIEW
Identifies the transformation matrix being set as the view transformation matrix. The default value is NULL (the identity matrix).

D3DTS_PROJECTION
Identifies the transformation matrix being set as the projection transformation matrix. The default value is NULL (the identity matrix).

D3DTS_TEXTURE0
Identifies the transformation matrix being set for the specified texture stage.

D3DTS_TEXTURE1
Identifies the transformation matrix being set for the specified texture stage.

D3DTS_TEXTURE2
Identifies the transformation matrix being set for the specified texture stage.

D3DTS_TEXTURE3
Identifies the transformation matrix being set for the specified texture stage.

D3DTS_TEXTURE4
Identifies the transformation matrix being set for the specified texture stage.

D3DTS_TEXTURE5
Identifies the transformation matrix being set for the specified texture stage.

D3DTS_TEXTURE6
Identifies the transformation matrix being set for the specified texture stage.

D3DTS_TEXTURE7
Identifies the transformation matrix being set for the specified texture stage.

D3DTS_FORCE_DWORD
Forces this enumeration to compile to 32 bits in size. Without this value, some compilers would allow this enumeration to compile to a size other than 32 bits. This value is not used.

ان لا أعرف شي عن الموضوع .. كل ما قمت به هو البحث قليلا في google .. كلها شغلة ربع ساعة.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اخي انا اشكرك

بعض الشرح هو ما كنت اريده حقا

ولكن ممكن احد يشرح هذا الشرح بالعربي

وكمان ممكن احد يشرحلي ما علاقة الماتركس بدوران المثلث ( اي لما لم اذا كان خط مثلا لميدور والمثلث هو الذي دار ) كيف ربطنا بين الماتركس والمثلث واذا كان خط او مثلث اخر كيف يمكن ان نحدد اي مثلث منهن يلف

سؤالي الرئيسي هو هذا ؟

اما بقية الاسئله والتي تتكلم عن الدوال فانا فاهم عمليتها وواجبها فمنها من يعطي الحجم ومنها من يسمح بالدوران ومنها ......

ولكني اريد معرفة برامتراتها

ملاحظه :- لما لا يوجد من يفهمني

اين انت يا gamedev4arab لما لم تعطي رايك .....

انا بانتظارك

وشكرا لكل واحد حاول ان يساعدني

وشكرا ..............

..........

تم تعديل بواسطه majnona_
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

عليك اخذ درس في الجبر الخطي و الهندسة الفراغية لتفهم هذه الأشياء.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

كلامك صحيح ib_doom

انا احاول توصيل المخلص ...

majnona_

هل قرأت فعلاً شرحي ؟

كلامك لا يدل ذلك ...

كيف ربطنا بين الماتركس والمثلث

للتبسيط ،،

احنا خلينا نقط المثلث في مصفوفة تحويل " تقوم بدوران النقط الثلاثة " ..

طريق اخري بالمعادلات التي كتبتها في موضوع " مرجع اسئلة دايركت اكس " .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

يجب معرفة ما هي المصفوفة

انا لم افهمها الا عندما درسناها في المدرسة...مصفوفة الوحدة..المصفوفة المربعة ونحوها

ثانيا من الصعب ان افهم درس الا بعد ان اجلس عليه 3 او 4ايام خاصة في مواضيع مهمة مثل هذه..بعدها ابدأ بالسؤال..

لان هذا حق من حقوقي ..

ونصيحة قلتها تكرار ومرار ابدؤااااااااااااااااااااااااا من الامثلة فهي المفيدة وستصل للاحتراف باذن الله ..( طبعا الامثلة التي تسير بك خطوة بخطوة)

تم تعديل بواسطه الشـمري
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
majnona_

هل قرأت فعلاً شرحي ؟

كلامك لا يدل ذلك ...

كيف ربطنا بين الماتركس والمثلث

للتبسيط ،،

احنا خلينا نقط المثلث في مصفوفة تحويل " تقوم بدوران النقط الثلاثة " ..

طريق اخري بالمعادلات التي كتبتها في موضوع " مرجع اسئلة دايركت اكس " .

نعم لقد قرات شرحك ولم افهم منه شيئا

فهل تستطيع ان تشرح كمان مره

وخاصة السؤال " كيف قمنا بربط النقاط الثلاث بالماتركس

ملاحظه:- هل علي انا احفظ كل شيء يمر علي بالدايركت اكس اي ( في d3dlight يوجد 13 متغير منها type and diffuse فهل علي ان احفظ 13 اما لا واذا كان نعم فهل احفظهن مره واحده ام كل شيء في وقته)

وشكرا..............

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من الصعب حفظها ان لم يكن مستحيل .. لكن كثرة كتابة الكود مرة ومرتين وثلاث.. يساعد على فهم الدالة

انا شخصيا احفظها بشكل مؤقت وذلم لاني اكتب عدة مرات ..( دوال opengl)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .