Разборка с примерами

Тема в разделе "WASM.DirectX", создана пользователем spa, 15 мар 2009.

  1. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Код (Text):
    1. ;           Name: dx9_initialization.cpp
    2. ;         Author: Kevin Harris (kevin@codesampler.com)
    3. ;  Last Modified: 03/03/04
    4. ;    Description: This sample demonstrates how to initialize Direct3D
    5. format PE GUI 4.0
    6. entry WinMain
    7.  
    8. include '%fasminc%\win32a.inc'
    9. include '%fasminc%\equates\kernel32.inc'
    10. include '%fasminc%\equates\gdi32.inc'
    11. include '%fasminc%\equates\user32.inc'
    12. include '%fasminc%\equates\winmm.inc'
    13. include '%fasminc%\equates\directx\d3d9.inc'
    14. include '%fasminc%\equates\directx\d3dx9.inc'
    15.  
    16. IDI_DIRECTX_ICON    = 107
    17.  
    18. section '.data' data readable writeable
    19.   WindowClass db "Direct3D9",0
    20.   WindowTitle db "Direct3D9 Initialization",0
    21.   align 4
    22.  
    23.   hWnd            dd 0
    24.   hinstance       dd 0
    25.   dwBehaviorFlags dd 0
    26.  
    27.   D3D       IDirect3D9
    28.   D3DDevice IDirect3DDevice9
    29.  
    30.   d3ddm     D3DDISPLAYMODE
    31.   d3dCaps   D3DCAPS9
    32.   d3dpp     D3DPRESENTPARAMETERS
    33.  
    34. section '.code' code readable executable
    35.  
    36. ;Name: WinMain() -> The application's entry point
    37. proc WinMain hInstance, hPrevInstance, lpCmdLine, nCmdShow
    38.      local msg:MSG, winClass:WNDCLASSEXA
    39.  
    40.      cinvoke memset, addr winClass, 0, sizeof.WNDCLASSEXA
    41.      invoke  GetModuleHandle, 0
    42.      mov     [hinstance], eax
    43.      mov     [winClass.hInstance], eax
    44.      mov     [winClass.lpszClassName], WindowClass
    45.      mov     [winClass.cbSize], sizeof.WNDCLASSEXA
    46.      mov     [winClass.style], CS_HREDRAW or CS_VREDRAW
    47.      mov     [winClass.lpfnWndProc], WindowProc
    48.      invoke  LoadIcon, [hinstance], IDI_DIRECTX_ICON
    49.      mov     [winClass.hIcon], eax
    50.      mov     [winClass.hIconSm], eax
    51.      invoke  LoadCursor, NULL, IDC_ARROW
    52.      mov     [winClass.hCursor], eax
    53.      mov     [winClass.hbrBackground], NULL
    54.      mov     [winClass.lpszMenuName], NULL
    55.      mov     [winClass.cbClsExtra], 0
    56.      mov     [winClass.cbWndExtra], 0
    57.  
    58.      ;Register our window class.
    59.      invoke  RegisterClassEx, addr winClass
    60.      .if     eax = NULL
    61.              invoke  MessageBox, HWND_DESKTOP, "RegisterClassEx() failed. Exiting Program",\
    62.                      WindowClass, 0
    63.              invoke  ExitProcess, 0
    64.              return
    65.      .endif
    66.  
    67.      ;Create window for Direct3D FullScreen mode.
    68.      invoke  CreateWindowEx, NULL, WindowClass, WindowTitle, WS_OVERLAPPEDWINDOW or WS_VISIBLE,\
    69.              0, 0, 640, 480, NULL, NULL, [hinstance], NULL
    70.      .if     eax = NULL
    71.              invoke  MessageBox, HWND_DESKTOP, "CreateWindowEx() failed. Exiting Program",\
    72.                      WindowClass, 0
    73.              invoke  ExitProcess, 0
    74.              return
    75.      .endif
    76.      mov     [hWnd], eax
    77.  
    78.      call    D3DInit
    79.      mov     [msg.message], TRUE
    80.      .while  [msg.message] <> WM_QUIT
    81.              call    D3DRender
    82.              invoke  PeekMessage, addr msg, NULL, 0, 0, PM_REMOVE
    83.              .if     eax <> NULL
    84.                      invoke  TranslateMessage, addr msg
    85.                      invoke  DispatchMessage, addr msg
    86.              .endif
    87.      .endw
    88.      call    D3DShutDown
    89.  
    90.      invoke  ExitProcess, 0
    91.      return
    92. endp
    93.  
    94. proc WindowProc  hWnd, msg, wParam, lParam
    95.      .if     [msg] = WM_KEYDOWN
    96.              .if     [wParam] = VK_ESCAPE
    97.                      invoke  PostQuitMessage, 0
    98.              .endif
    99.              return  0
    100.  
    101.      .elseif [msg] = WM_DESTROY
    102.              invoke  PostQuitMessage, 0
    103.              return  0
    104.      .endif
    105.  
    106.      ;DefWindowProc process all other messages that we don't want
    107.      invoke  DefWindowProc, [hWnd], [msg], [wParam], [lParam]
    108.      return
    109. endp
    110.  
    111. proc D3DInit
    112.      invoke  Direct3DCreate9, D3D_SDK_VERSION
    113.      .if     eax = NULL
    114.              invoke  MessageBox, HWND_DESKTOP, <"Direct3DCreate9() failed.",10,13,\
    115.                      "Exiting Program">, WindowClass, MB_OK
    116.              invoke  PostQuitMessage, 0
    117.              return
    118.      .endif
    119.      mov     [D3D], eax
    120.  
    121.      D3DCALL D3D, GetAdapterDisplayMode, D3DADAPTER_DEFAULT, d3ddm
    122.      .if     eax <> D3D_OK
    123.              invoke  MessageBox, HWND_DESKTOP, <"D3D -> GetAdapterDisplayMode() failed.",10,13,\
    124.                      "Exiting Program">, WindowClass, MB_OK
    125.              invoke  PostQuitMessage, 0
    126.              return
    127.      .endif
    128.  
    129.      D3DCALL D3D, CheckDeviceFormat, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, [d3ddm.Format],\
    130.              D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_SURFACE, D3DFMT_D16
    131.      .if     eax <> D3D_OK
    132.              invoke  MessageBox, HWND_DESKTOP, <"D3D -> CheckDeviceFormat() failed.",10,13,\
    133.                      "Requires at least a 16-bit Depth Stencel",10,13,\
    134.                      "Exiting Program">, WindowClass, MB_OK
    135.              invoke  PostQuitMessage, 0
    136.              return
    137.      .endif
    138.  
    139.      D3DCALL D3D, GetDeviceCaps, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, d3dCaps
    140.      .if     eax <> D3D_OK
    141.              invoke  MessageBox, HWND_DESKTOP, <"D3D -> GetDeviceCaps() failed.",10,13,\
    142.                      "Exiting Program">, WindowClass, MB_OK
    143.              invoke  PostQuitMessage, 0
    144.              return
    145.      .endif
    146.  
    147.      .if     [d3dCaps.VertexProcessingCaps] <> 0
    148.              mov     [dwBehaviorFlags], D3DCREATE_HARDWARE_VERTEXPROCESSING
    149.      .else
    150.              mov     [dwBehaviorFlags], D3DCREATE_SOFTWARE_VERTEXPROCESSING
    151.      .endif
    152.  
    153.      cinvoke memset, d3dpp, 0, sizeof.D3DPRESENTPARAMETERS
    154.      mov     eax, [d3ddm.Format]
    155.      mov     [d3dpp.BackBufferFormat], eax
    156.      mov     [d3dpp.SwapEffect], D3DSWAPEFFECT_DISCARD
    157.      mov     [d3dpp.Windowed], TRUE
    158.      mov     [d3dpp.EnableAutoDepthStencil], TRUE
    159.      mov     [d3dpp.AutoDepthStencilFormat], D3DFMT_D16
    160.      mov     [d3dpp.Presentation_Interval], D3DPRESENT_INTERVAL_IMMEDIATE
    161.  
    162.      D3DCALL D3D, CreateDevice, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, [hWnd], [dwBehaviorFlags],\
    163.              d3dpp, D3DDevice
    164.      .if     eax <> D3D_OK
    165.              invoke  MessageBox, HWND_DESKTOP, <"D3D -> CreateDevice() failed.",10,13,\
    166.                      "Exiting Program">, WindowClass, MB_OK
    167.              invoke  PostQuitMessage, 0
    168.              return
    169.      .endif
    170.      return
    171. endp
    172.  
    173. proc D3DRender
    174.      D3DCALL D3DDevice, Clear, 0, NULL, D3DCLEAR_TARGET or D3DCLEAR_ZBUFFER, $ff00ff00, 1.0, 0
    175.      D3DCALL D3DDevice, BeginScene
    176.      ;Render geometry here...
    177.      D3DCALL D3DDevice, EndScene
    178.      D3DCALL D3DDevice, Present, NULL, NULL, NULL, NULL
    179.      return
    180. endp
    181.  
    182. proc D3DShutDown
    183.      .if     [D3DDevice] <> NULL
    184.              D3DCALL D3DDevice, Release
    185.      .endif
    186.  
    187.      .if     [D3D] <> NULL
    188.              D3DCALL D3D, Release
    189.      .endif
    190.      return
    191. endp
    192.  
    193. section '.rsrc' resource data readable
    194.   directory RT_MANIFEST, manifest, RT_ICON, icons, RT_GROUP_ICON, group_icons
    195.  
    196.   resource manifest, 1, LANG_NEUTRAL, winxp
    197.   resource icons, 1, LANG_NEUTRAL, icon_data
    198.   resource group_icons, IDI_DIRECTX_ICON, LANG_NEUTRAL, main_icon
    199.  
    200.   icon    main_icon, icon_data, 'codesampler.ico'
    201.  
    202.   resdata winxp
    203.           file '%fasminc%\winxpstyle.xml'
    204.   endres
    205.  
    206. section '.idata' import data readable writeable
    207.  
    208.   library kernel32,'KERNEL32.DLL',\
    209.           user32,'USER32.DLL',\
    210.           gdi32,'GDI32.DLL',\
    211.           winmm,'WINMM.DLL',\
    212.           crtdll, 'CRTDLL.DLL',\
    213.           d3d9,'D3D9.DLL',\
    214.           d3dx9_24,'D3DX9_24.DLL'
    215.  
    216.   include '%fasminc%/apia/kernel32.inc'
    217.   include '%fasminc%/apia/user32.inc'
    218.   include '%fasminc%/apia/gdi32.inc'
    219.   include '%fasminc%/apia/winmm.inc'
    220.   include '%fasminc%/apia/crtdll.inc'
    221.   include '%fasminc%/apia/directx/d3d9.inc'
    222.   include '%fasminc%/apia/directx/d3dx9_24.inc'
    Хотел поразбираться с примерчиками, мне вообще косвенно необходима данная инфа, но всетаки. ПРоблемма в том что все примеры из этой серии ложаться на (всмысле выводить данный бокс ))
    Код (Text):
    1. invoke  MessageBox, HWND_DESKTOP, <"D3D -> CheckDeviceFormat() failed.",10,13,\
    2.                      "Requires at least a 16-bit Depth Stencel",10,13,\
    3.                      "Exiting Program">, WindowClass, MB_OK
    хотелось бы перед началам разбора, понять в чем проблемма и как ее решить
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    SPA
    ???
     
  3. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Booster
    ???
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    SPA
    Моя твоя не понимать. Обычное сообщение о ошибке.
     
  5. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Booster
    читаем текст выше и думаем. Ты просто гений насчет