DirectX 9 编程 -- DirectX窗口

 

  1  #include  < windows.h >
  2  #include  < d3d9.h >
  3  #include  < d3dx9.h >
  4 
  5  LRESULT CALLBACK MsgProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
  6  {
  7       switch (message)
  8      {
  9           case  WM_DESTROY:
 10              PostQuitMessage( 0 );
 11               return   0 ;
 12      }
 13       return  DefWindowProc(hwnd,message,wParam,lParam);
 14  }
 15 
 16  int  WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInstance,LPSTR lpCmdLine, int  nShowCmd)
 17  {
 18      IDirect3D9 *  g_pD3D = NULL;
 19       if ( ! (g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)))  return  E_FAIL;
 20      
 21      WNDCLASSEX wc =
 22      {
 23           sizeof (WNDCLASSEX),
 24          CS_CLASSDC,
 25          MsgProc,
 26           0 ,
 27           0 ,
 28          GetModuleHandle(NULL),
 29          NULL,
 30          NULL,
 31          NULL,
 32          NULL,
 33          TEXT( " WindowClass " ),
 34          NULL
 35      };
 36 
 37      RegisterClassEx( & wc);
 38 
 39      HWND hWnd = CreateWindow(
 40          TEXT( " WindowClass " ),
 41          TEXT( " TEST " ),
 42          WS_OVERLAPPEDWINDOW,
 43           100 ,
 44           100 ,
 45           512 ,
 46           512 ,
 47          GetDesktopWindow(),
 48          NULL,
 49          wc.hInstance,
 50          NULL);
 51 
 52      D3DPRESENT_PARAMETERS d3dpp;
 53      ZeroMemory( & d3dpp, sizeof (d3dpp));
 54      d3dpp.Windowed = true ;
 55      d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
 56      d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
 57      d3dpp.EnableAutoDepthStencil = true ;
 58      d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
 59 
 60      IDirect3DDevice9 *  g_pd3dDevice;
 61       if (FAILED(
 62          g_pD3D -> CreateDevice(
 63              D3DADAPTER_DEFAULT,
 64              D3DDEVTYPE_HAL,
 65              hWnd,
 66              D3DCREATE_SOFTWARE_VERTEXPROCESSING,
 67               & d3dpp,
 68               & g_pd3dDevice)
 69              )
 70          )  return  E_FAIL;
 71 
 72      ShowWindow(hWnd,nShowCmd);
 73 
 74      MSG msg;
 75 
 76      PeekMessage( & msg,NULL, 0 , 0 ,PM_NOREMOVE);
 77 
 78       while (msg.message != WM_QUIT)
 79      {
 80           if (PeekMessage( & msg,NULL, 0 , 0 ,PM_REMOVE))
 81          {
 82              TranslateMessage( & msg);
 83              DispatchMessage( & msg);
 84          }
 85           else
 86          {
 87               // here render your game
 88              g_pd3dDevice -> Clear( 0 ,NULL,D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB( 0xff , 0xff , 0x00 ), 1.0 , 0 );
 89               if (SUCCEEDED(g_pd3dDevice -> BeginScene()))
 90              {
 91                  g_pd3dDevice -> EndScene();
 92              }
 93              g_pd3dDevice -> Present(NULL,NULL,NULL,NULL);
 94          }
 95      }
 96 
 97      g_pd3dDevice -> Release();
 98 
 99      g_pD3D -> Release();
100 
101       return   0 ;
102  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值