نمایش نتایج 1 تا 22 از 22

نام تاپیک: آموزش DirectX-Graphic

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    کاربر تازه وارد آواتار juggle
    تاریخ عضویت
    تیر 1389
    محل زندگی
    یه خورده بالا تر
    پست
    55

    Thumbs up آموزش DirectX-Graphic

    برگرفته از کتاب Visual Basic
    مؤلف: وحید شیداییان


    آموزش DirectX-Graphic قسمت اول

    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


    DimDispMode as D3DISPLAYMODE

    شي D3DISPLAYMODE حالت نمايش را مشخص مي نمايد .



    Dim D3Dwindow as D3DPRESENT_PARAMETERS

    شي فوق مشخص مي کند که viewport شما چگونه باشد .
    حال شي اصلي DirectX8 را مي سازيم :



    Set Dx=New DirectX8

    سپس شي اصلي ساخت واسط سه بعدي را مي سازيم :



    ()set D3D.Dx.Direct3Dcreate

    سپس حالت فعلي نمايش را با دستور زير استخراج مي کنيم :



    D3D.getadapterdisplaymodeD3DADAPTER_DEFAULT,dispmo de

    حال دو حالت براي کار با DirectX داريم :
    1 - 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 ساخته شود که يا از طريق سخت افزار و يا نرم افزار تصاوير را رندر نمايد :



    SetD3DDevice=D3Dcreatedevice(D3DADAPTER_DEFAULT


    ,D3DDEVTYPE_HAL,


    frmMain.hwnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,


    D3Dwindow)x,


    endsub

    درصورتي که کارت گرافيک شما امکانات رندر سخت افزاري تصاوير را ندارد از D3DDEVTYPE_REF بجاي D3DDEVTYPE_HAL استفاده کنيد .
    حال بايستي روتين render را بنويسيم . البته در اين درس تصويري براي رندر نداريم و تنها چگونگي نوشتن اين روتين را بيان خواهم کرد :
    ۱ - ابتدا بايستي device مربوط به رندر ، قبل از کشيدن تصوير در آن پاک شود :



    D3DDevice.clear 0,byval 0,D3DCLEAR_TARGET,&H0,1#,0

    عدد hex اي که در دستور فوق آمده رنگ زمينه صفحه را مشخص مي کند
    ۲ - سپس بايستي تصاوير مورد نظر را رندر کنيم . اينکار توسط دستورات زير انجام مي شود :



    D3DDevice.beginscence


    all rendering calls gobetween these two lines '


    D3DDEvice.endscence

    3 - در پايان بايستي صفحه را update کنيد :



    D3DDevice.present byval 0,byval 0,0,byval 0
    --------------------
    در صورتی که دوستان علاقه خود رو نسبت به این تاپیک نشان دهند قسمت های بعدی مطلب را قرار میدهم
    آخرین ویرایش به وسیله xxxxx_xxxxx : پنج شنبه 29 مهر 1389 در 04:54 صبح دلیل: ذکر منبع

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •