|
آموزشDirectX-Graphic قسمت ششم
|
|
۸-۸-۱۳۸۶, ۱۲:۵۶ صبح
ارسال: #1
|
|||
|
|||
|
آموزشDirectX-Graphic قسمت ششم
موضوع : مفاهيم اوليه رسم اشکال سه بعدي در DirectX 8
در اين درس با استفاده از Direct3D يک مکعب را رسم مي کنيم . براي اين منظور ابتدا نياز به يک بافر داريم که بتوانيم شکل مورد نظر خود را در آن ذخيره کنيم : Dim VBuffer as Direct3DVertexBuffer8 براي رسم مکعب از vertex هاي سه بعدي استفاده مي کنيم . براي اينکار نياز به تعريف يک تايپ جديد داريم : Private Type LITVERTEX x as single y as single z as single color as long specular as long tu as single tv as single end type توصيف گر اين فرمت ، بصورت زير است : Const Lit_FVF = (D3DFVF_XYZ Or D3DFVF_DIFFUSE Or D3DFVF_SPECULAR Or D3DFVF_TEX1)x براي توصيف مکعب در اين درس از روشي غيرکارامد استفاده شده است . به اين ترتيب که از ۳۶ عدد vertex استفاده شده ( در درسهاي بعدي متدهايي معرفي خواهند شد که اجازه مي دهند از ۸ عدد vertex باري توصيف مکعب استفاده کنيد ) . Dim cube(35) as LITVERTEX سپس بايد يکسري ماتريس سه بعدي تعريف کنيم : اولين ماتريس ، matworld است که نشان مي دهد چگونه vertex ها در فضاي سه بعدي قرار گرفته اند . دومين ماتريس ، matview است که نشان مي دهد دوربين ( نقطه ديد ) در کجا قرار گرفته و سومين ماتريس ، matproj است که نشان مي دهد دوربين چگونه دنياي سه بعدي را روي صفحه دو بعدي نشان مي دهد : Dim matworld as D3DMATRIX Dim matview as D3DMATRIX Dim matproj as D3DMATRIX در تابع Initialize قبل از ساخت device بايستي چک کنيم که آيا مي توانيم از يک بافر Z شانزده بيتي استفاده کنيم يا نه ؟ If D3D.CheckDeviceFormat(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, DispMode.Format, D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_SURFACE, D3DFMT_D16) = D3D_OK Then D3DWindow.AutoDepthStencilFormat = D3DFMT_D16 '16 bit Z-Buffer حال بايستي متد D3DCreateDevice را اجرا کنيد . سپس بايد سيستم سايه زني vertex را با فرمت vertex مان تنظيم کنيم : D3DDevice.SetVertexShader Lit_FVF همچنين سيستم نورپردازي را غير فعال مي کنيم : D3DDevice.SetRenderState D3DRS_LIGHTING, False Direct3D هيچ مثلثي را که در ديد شما نباشد رسم نخواهد کرد . براي متوقف کردن اين امر بايستي حالت culling آنرا متوقف کنيد همچنين vertex ها را بترتيب عقربه هاي ساعت معرفي کنيد : D3DDevice.SetRenderState D3DRS_CULLMODE, D3DCULL_NONE سپس بايد فرمت بافر Z را فعال سازيد : D3DDevice.SetRenderState D3DRS_ZENABLE, 1 |
|||
کاربرانِ درحال بازدید از این موضوع: 1 مهمان
Persian MyBB : MyBBIran.com
Powered by MyBB | Copyright © 2009 MyBB Group
Element Blue by MyBB Mod | RTL by MyBBIran.com
Powered by MyBB | Copyright © 2009 MyBB Group
Element Blue by MyBB Mod | RTL by MyBBIran.com





