ثبت نام | ورود

خوش آمدید: مهمان
خانه | لیست مطالب | ارسال مطلب | فروشگاه الکترونیکی | اتاق چت و گفتگو

منو اصلي
اتاق چت گفتگو
کليپ تصويري و نماهنگ
دفتر يادبود
لينک باکس

طنز و سرگرمی
پارس اخبار
نقشه سايت
دنياي خنده و طنز
Sms اس ام اس
اخبار و رسانه ها
آموزش کامپيوتر
IT فن آوري اطلاعات
ورزشي
موفقیت و پیروزی
نجوم و ستاره شناسی
مذهبی
فیلم و سینما
گیاه شناسی
عکس و کاريکاتور
فال و طالع بینی
عشق و دوستی
علمي ، آموزشي
دانلود نرم افزار
آرايش و زيبايي
طنز و سرگرمي
سلامتي و بهداشت
خانه و خانواده
آشپزی
ادبيات
کشاورزي
هنر
کار و تجارت
بیوگرافی
آخرين مطالب ارسال شده
قابليت آزاردهنده را حذف کنيد..
شعبده‌بازي با استفاده از حقا..
چرا خدا مردها را آفريد ؟
ضدآب کردن گوشي موبايل
چگونه يک تلفن همراه در آب اف..
آشنايي با نرم‌افزار امنيت شب..
چطور بفهميم دختري تمايل ازدو..
نمونه خانمهايي که آقايان واق..
10 اشتباه نابخشودني طراحان و..
دسترسي به ليست پرشي ويندوز7
مدل لباس زنانه با دامن کوتاه..
عکس هاي جالب و ديدني
اعتماد به نفس براي يک عمر
اعتماد به نفس ارثي نيست
اعتمادبه‌نفس در 10 روز
عشق‌ ورزيدن‌ به‌ سکوت‌
يوگا براي کودکان
يوگا چيست؟
ده تمرين کششي مهم
يوگا درماني چيست؟
يوگا و خواص آن در ميانسالي
رابطه يوگا و سلامتي
سايت هاي همکار







منتخب برای شما
خانه » لیست موضوعات » آموزش کامپيوتر » آموزش انواع نرم افزار :: نمایش مطلب

آموزشDirectX-Graphic (قسمت سوم)

  ارسال این مطلب به یک دوست   
 اطلاعات کاربر:
 
 نويسنده مطلب:  مجيد
 محل کاربر: تهران
تمام مطالب کاربر: تمام مطالب توسط مجيد
 
اطلاعات مطلب:
ارسال شده در: شنبه 15 مهر 1385

متن مطلب:
گزارش مطلب در صورت اهانت آمیز بودن
نمایش داده شده: 620 دفعه 
 اندازه متن:  1  2  3  4 

موضوع : رسم اشکال دو بعدي
مروري بر object هاي DirectX8
1 DirectX8 : اين شي ، شي مرکزي براي directX است و به شما امکان دسترسي به توابع و اشيا DirectX را مي دهد .

? - Direct3D8 : شي اصلي براي کار با محيط سه بعدي مي باشد . هدف از آن ، ساخت Direct3DDevice8 است و همچنين شامل توابعي براي مشخص کردن توانايي هاي کارت گرافيک است .

? - Direct3DDevice8 : اين شي مسئول ساخت بافتها textures ، مديريت نورها در يک صحنه ، مديريت مواد materials و همچنين render صحنه است . در واقع اين شي ، قلب نمايشي کار شماست .

4 - D3DX8 : گر چه هميشه نيازي به استفاده از اين شي نيست ، اما اين شي شامل توابعي براي ساخت برنامه هاي userfriendly تر توسط DirectX است .

مثلاً ساخت اشيا سه بعدي ( مثل کره ، مکعب و ... ) ، ساخت بافتها ، ساخت سطوح و غيره

شروع کار براي رسم اشيا دوبعدي

ابتدا ثابت FVF را تعريف مي کنيم . اين ثابت توصيف '' فرمت قابل انعطاف نقطه flexible-vertex-format '' براي يک vertex دو بعدي انتقال يافته و ساده شده مي باشد .

سپس بايستي يک ساختار براي توصيف اين vertex معرفي کنيم :

Const FVF = D3DFVF_XYZRHW Or D3DFVF_TEX1 Or D3DFVF_DIFFUSE Or D3DFVF_SPECULAR
Private Type TLVERTEX
X As Single
Y As Single
Z As Single
rhw As Single
color As Long
specular As Long
tu As Single
tv As Single
End Type

فرض کنيد بخواهيم يک مربع را در صفحه رسم کنيم . براي رسم آن نياز به 4 عدد vertex داريم . بنابراين آرايه TriStrip را از نوع TLVERTEX تعريف ميکنيم
:Dim TriStrip (0 To 3) As TLVERTEX

حال به سراغ تابع initialize که در درس ? با آن آشنا شديد مي رويم و دستورات زير را به آن اضافه مي کنيم :

Private Function Initialize as Boolean

.
.
.

ابتدا سيستم سايه زني vertex را طوري تنظيم مي کنيم که از FVF استفاده کند .
D3DDevice.SetVertexShader FVF

حال سيستم lighting را براي vertex هاي دو بعدي غير فعال مي کنيم زيرا نيازي به آن نداريم :
D3DDevice.SetRenderState D3DRS_LIGHTING,false
حال بايستي تابع initializeGeometry را اجرا کنيم . اين تابع را در ادامه توضيح خواهم داد . اگر نتيجه اين تابع true باشد دراينصورت initialize به درستي انجام شده است :
if initializeGeometry()=true then initialize=true
end function

تابع initializeGeometry در اين درس ، تابعي ساده است که تنها آرايه Vertex ها را مقدار دهي مي کند . براي رسم يک مربع نياز به مقداردهي ? vertex در جهت عقربه هاي ساعت داريم ( اين مربع شامل ? مثلث است )
Private Function InitialiseGeometry() As Boolean
On Error GoTo BOut:
color = RGB(200, 100, 0)
TriStrip(0) = CreateTLVertex(100, 100, 0, 1, color, 0, 0, 0)
TriStrip(1) = CreateTLVertex(300, 100, 0, 1, color, 0, 0, 0)
TriStrip(2) = CreateTLVertex(100, 300, 0, 1, color, 0, 0, 0)
TriStrip(3) = CreateTLVertex(300, 300, 0, 1, color, 0, 0, 0)
InitialiseGeometry = True
Exit Function
BOut:
InitialiseGeometry = False
End Function

همانطور که مشاهده مي کنيد براي تعريف vertex از تابع CreateTLVERTEX استفاده شده است . اين تابع صرفاً مقادير ساختار TLVERTEX را مقداردهي مي کند :

Private Function CreateTLVertex(X As Single, Y
As Single, Z As Single, rhw As Single, color As Long, specular
As Long, tu As Single, tv As Single) As TLVERTEX


نکته : ضمن اينکه شما مي توانيد مقادير اعشاري floating point را براي مختصاتهاي x و y و z بکار ببريد ، Direct3D مختصاتها را با گردکردن آنها تخمين مي زند و بنابراين ممکنست باعث ايجاد نتايج ناخواسته شود .
CreateTLVertex.X = X
CreateTLVertex.Y = Y
CreateTLVertex.Z = Z
CreateTLVertex.rhw = rhw
CreateTLVertex.color = color
CreateTLVertex.specular = specular
CreateTLVertex.tu = tu
CreateTLVertex.tv = tv
End Function
حال بايستي تابع Render را بنويسيم :
Public Sub Render()
D3DDevice.Clear 0, ByVal 0, D3DCLEAR_TARGET, 0, 1#, 0
D3DDevice.BeginScene
D3DDevice.DrawPrimitiveUP D3DPT_TRIANGLESTRIP, 2, TriStrip(0), Len(TriStrip(0))x
D3DDevice.EndScene
D3DDevice.Present ByVal 0, ByVal 0, 0, ByVal 0
End Sub

ساختار اصلي براي اجراي توابع فوق بصورت زير است :
--Main part—
Initialize
Do While yourevent=true
Render
DoEvents
Loop


↓ تبلیغ های جدید و روز برای شما ↓


 وضعیت: فعال


عضویت دوستان
:: دریافت ایمیل رایگان ::
عکس و کاریکاتور
جوک و اس ام اس
مطالب آموزشی تفریحی

ثبت نام
تبليغات
مطالب روز
بهترين ها
بادام تلخ در درمان سرما..
ورود چند نفره به مسنجر ..
بيش از 50 نوع از کليد ه..
ساختار دقيقترين توپ فوت..
نکاتي مهم و کليدي براي ..
ديدن مبلغ قبض ميان دوره..
زورگوئي و دروغ گویی
فرشته نجات
دستور زبان اصفهاني
رضا صادقي کیست ؟
شکار لحظه هاي ورزشي
خاطرات مدرسه
نقشه و پروژکتور چراغ قو..
اس ام اس شبهاي قدر و شه..
طالع بيني افراد از روي ..
چند تا لطیفه از غضنفر
sms SMS SmS sMs اس مس
چهار قانون شادکامي و مو..
گياهي که موش مي خورد + ..
کاريکاتورهايي در باب لذ..
ده فايده لبخند زدن
آموزش خودكشي (طنز)

تمام مطالب داغ ...
بهترین لینک

 جستجو برای:     فقط با عکس:  
 جستجو در:   جستجو پیشرفته    

همکاری تبلیغاتی | نقشه سایت | شرایط استفاده | تماس با ما |