Directx09 创建窗口代码

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-17 03:32   88   0
#include"d3d9.h"
#include"d3dx9.h"
//-------------------------global variables---------
LPDIRECT3D9 g_pD3D=NULL;
LPDIRECT3DDEVICE9 g_pd3dDevice=NULL;

VOID Cleanup()
{
    if( g_pd3dDevice != NULL)
        g_pd3dDevice->Release();
    if( g_pD3D != NULL)
        g_pD3D->Release();
}
HRESULT Init(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;
 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 Render()
{
 // Clear the back buffer to a blue color
 g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );

 // Begin the scene
 g_pd3dDevice->BeginScene();

 // Rendering of scene objects happens here

 // End the scene
 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 )
{
 // Register the window class.
 WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, 
 GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
 "Direct3D Tutorial", NULL };

 RegisterClassEx( &wc );

 // Create the application's window.
 HWND hWnd = CreateWindow( "Direct3D Tutorial", "Direct3D Tutorial 01: CreateDevice", 
 WS_OVERLAPPEDWINDOW, 100, 100, 300, 300,
 GetDesktopWindow(), NULL, wc.hInstance, NULL );

 if(SUCCEEDED(Init(hWnd)))
 {
  
  ShowWindow(hWnd,SW_SHOWNORMAL);
  UpdateWindow(hWnd);
  // The message loop.
  MSG msg; 
  while( GetMessage( &msg, NULL, 0, 0 ) )
  {
   TranslateMessage( &msg );
   DispatchMessage( &msg );
  }
 }
}



分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP