zoukankan      html  css  js  c++  java
  • DirectX程序例子

    自己的第一个DX程序,开始学习的第一步

    #include<d3d9.h>

    LPDIRECT3D9 g_pD3D ;
    LPDIRECT3DDEVICE9 g_pd3dDevice ;

    HRESULT InitD3D(HWND hWnd)
    {
      if(NULL == (g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)))
      {
        return E_FAIL;
      }
      D3DPRESENT_PARAMETERS d3dpp ;//创建设备结构体
      ZeroMemory(&d3dpp , sizeof(d3dpp));
      d3dpp.Windowed = TRUE ;//创建窗口模式
      d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD ;//最有效的SWAP效果
      d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;//建立一个与当前模式相匹配的后置缓冲

      if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT ,
                                  D3DDEVTYPE_HAL , hWnd ,
             D3DCREATE_SOFTWARE_VERTEXPROCESSING ,
             &d3dpp ,
             &g_pd3dDevice)))
      {
       return E_FAIL;
      }

      return S_OK;
    }

    VOID Cleanup()
    {
     if(g_pd3dDevice != NULL)
     {
      g_pd3dDevice->Release();
     }
     if(g_pD3D != NULL)
     {
      g_pD3D->Release();
     }
    }

    VOID Render()
    {
      if(NULL == g_pd3dDevice)
      {
       return ;
      }

      //将后置缓冲清除 ,同时设置为蓝色
      g_pd3dDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,255),1.0f,0);

      if(SUCCEEDED(g_pd3dDevice->BeginScene()))
      {
        //实际渲染命令栏

       g_pd3dDevice->EndScene();
      }
      g_pd3dDevice->Present(NULL , NULL , NULL , NULL);

    }

    LRESULT WINAPI MsgProc(HWND hWnd , UINT msg , WPARAM wParam , LPARAM lParam)
    {
      switch(msg)
      {
      case WM_DESTROY:
       Cleanup();
       PostQuitMessage(0);
       return 0;
      case WM_PAINT:
       Render();
       ValidateRect(hWnd , NULL);
       return 0;
      }
      return DefWindowProc(hWnd , msg , wParam , lParam);
    }

    INT WINAPI WinMain(HINSTANCE hInst , HINSTANCE , LPSTR , INT)
    {
     WNDCLASSEX wc = {
                    sizeof(WNDCLASSEX),CS_CLASSDC , MsgProc , 0L , 0L ,
           GetModuleHandle(NULL) , NULL , NULL , NULL , NULL ,
           "D3D Tutorial" , NULL
     };
     RegisterClassEx(&wc);

     HWND hWnd = CreateWindow(
                            "D3D Tutorial" , "D3D Tutorial01 : CreateDevice" ,
             WS_OVERLAPPEDWINDOW , 100 , 100 , 300 , 300 ,
             GetDesktopWindow() , NULL , wc.hInstance , NULL);

     if(SUCCEEDED(InitD3D(hWnd)))
     {
       ShowWindow(hWnd , SW_SHOWDEFAULT);
       UpdateWindow(hWnd);
       MSG msg ;
       while(GetMessage(&msg , NULL , 0 , 0))
       {
         TranslateMessage(&msg);
      DispatchMessage(&msg);
       }
     }
                          
       UnregisterClass("D3D Tutorial" , wc.hInstance);

      return 0;
    }

    转自:http://zhouweigang01.blog.163.com/blog/static/934090720079289345651/

  • 相关阅读:
    Delphi公用函数单元
    Delphi XE5 for Android (十一)
    Delphi XE5 for Android (十)
    Delphi XE5 for Android (九)
    Delphi XE5 for Android (八)
    Delphi XE5 for Android (七)
    Delphi XE5 for Android (五)
    Delphi XE5 for Android (四)
    Delphi XE5 for Android (三)
    Delphi XE5 for Android (二)
  • 原文地址:https://www.cnblogs.com/zhangpengshou/p/1699902.html
Copyright © 2011-2022 走看看