DirectX8 ابزاری برای ساخت تصاویر ثابت و متحرک دو بعدی و سه بعدی می باشد .
برای کار با DirectX8 ابتدا بایستی آنرا روی سیستم خود نصب کنید . سپس در محیط vb از منوی project گزینه References را انتخاب کنید . در فرمی که ظاهر می شود اطمینان حاصل کنید که گزینه DirectX8 for VB type library فعال باشد .
برای کار با DirectX8 بایستی از تعریف نمودن شی پایه DirectX8 شروع نمود :
Dim Dx as DirectX8
شی Direct3D8 برای کنترل اشیا سه بعدی بکار می رود :
Dim D3D as Direct3D8
شی Direct3DDevice8 ، سخت افزار مربوط به رندر تصاویر را مشخص می کند :
Dim D3DDevice as Direct3DDevice8
حال برای شروع کار با Direct3D ، تابع ( ) initialise را تعریف می کنیم . اگر اینکار درست انجام شود تابع ، مقدار true را برمی گرداند :
public function initialise () as boolean
Dim DispMode as D3DISPLAYMODE
شی D3DISPLAYMODE حالت نمایش را مشخص می نماید .
Dim D3Dwindow as D3DPRESENT_PARAMETERS
شی فوق مشخص می کند که viewport شما چگونه باشد .
حال شی اصلی DirectX8 را می سازیم :
Set Dx=New DirectX8
سپس شی اصلی ساخت واسط سه بعدی را می سازیم :
()set D3D.Dx.Direct3Dcreate
سپس حالت فعلی نمایش را با دستور زیر استخراج می کنیم :
D3D.getadapterdisplaymode D3DADAPTER_DEFAULT,dispmode
حال دو حالت برای کار با DirectX داریم :
۱ – windowed mode
2 – fullscrean mode
1 – برای کار با حالت پنجره ای ابتدا این موضوع را به DirectX اطلاع می دهیم :
D3Dwindow.windowed=1
سپس نوع referesh تصویر را مشخص می کنیم ( در اینجا چند انتخاب وجود دارد که در صورت نیاز به اطلاعات بیشتر با من تماس بگیرید . ) :
D3Dwindow.swapeffect=D3DSWAPEFFECT_COPY_VSYNC
سپس بایستی فرمت بافر نگهدارنده تصاویر را مشخص کنیم :
D3Dwindow.backbufferformat=dispmode.format
2 – برای کار با حالت تمام صفحه ، ابتدا نوع refresh را مشخص کرده سپس تعداد بافر های تصویر و سرانجام نوع و سایز بافر را مشخص می نمائیم :
D3Dwindow.swapeffect=D3DSWAPEFFECT_DISCARD
D3Dwindow.backbuffercount=1
D3Dwindow.backbufferformat=dispmode.format
D3Dwindow.backbufferheight=dispmode.height
D3Dwindow.backbufferwidth=dispmode.width
سپس پنجره نمایش مشخص می گردد :
D3Dwindow.hdevicewindow=frmMain.hwnd
@حال بایستی یک
device ساخته شود که یا از طریق سخت افزار و یا نرم افزار تصاویر را رندر نماید :
Set D3DDevice=D3Dcreatedevice(D3DADAPTER_DEFAULT
,D3DDEVTYPE_HAL,
frmMain.hwnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,
D3Dwindow)x,
end sub
درصورتی که کارت گرافیک شما امکانات رندر سخت افزاری تصاویر را ندارد از D3DDEVTYPE_REF بجای D3DDEVTYPE_HAL استفاده کنید .
حال بایستی روتین render را بنویسیم . البته در این درس تصویری برای رندر نداریم و تنها چگونگی نوشتن این روتین را بیان خواهم کرد :
۱ – ابتدا بایستی device مربوط به رندر ، قبل از کشیدن تصویر در آن پاک شود :
D3DDevice.clear 0,byval 0,D3DCLEAR_TARGET,&H0,1#,0
عدد hex ای که در دستور فوق آمده رنگ زمینه صفحه را مشخص می کند
۲ – سپس بایستی تصاویر مورد نظر را رندر کنیم . اینکار توسط دستورات زیر انجام می شود :
D3DDevice.beginscence
all rendering calls go between these two lines ‘
D3DDEvice.endscence
3 – در پایان بایستی صفحه را update کنید :
D3DDevice.present byval 0,byval 0,0,byval 0
دیدگاه خود را بیان کنید.
باید وارد سایت شده باشید برای دیدگاه دادن