• 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/

  • 相关阅读:
    机器学习 之 SVM VC维度、样本数目与经验风险最小化的关系
    password学4——Java 加密解密之消息摘要算法(MD5 SHA MAC)
    JavaScript实现类的private、protected、public、static以及继承
    android:3D垂直翻转动画-FlipAnimation
    生产者消费者问题
    01串
    html5+css3 权威指南阅读笔记(三)---表单及其它新增和改良元素
    Android xUtils3源代码解析之网络模块
    mysql5.7切换导致gtid不一致
    mysql简单优化的一些总结
  • 原文地址:https://www.cnblogs.com/zhangpengshou/p/1699902.html
Copyright © 2020-2023  润新知