Directx9.0 tutorial 2-using the dxut framework

Source: Internet
Author: User
Tags win32 window

The dxut framework is a public framework of the samples example. It is very convenient to encapsulate many complex and repetitive operations.

Easy to use

C: \ Program Files \ Microsoft DirectX SDK (June 2010) \ samples \ samplebrowser

There is a samplebrowser file under the SDK installation directory. Open


Then, based on your own version, select the above, emptyproject Project

Then installproject

After automatic installation is complete. Open the project. Clean the project to prevent cache errors

Then you 'd better re-open the project. Run F5.

Is a basic window.

//--------------------------------------------------------------------------------------// File: EmptyProject.cpp//// Copyright (c) Microsoft Corporation. All rights reserved.//--------------------------------------------------------------------------------------#include "DXUT.h"#include "resource.h"//--------------------------------------------------------------------------------------// Rejects any D3D9 devices that aren't acceptable to the app by returning false//--------------------------------------------------------------------------------------bool CALLBACK IsD3D9DeviceAcceptable( D3DCAPS9* pCaps, D3DFORMAT AdapterFormat, D3DFORMAT BackBufferFormat,                                      bool bWindowed, void* pUserContext ){    // Typically want to skip back buffer formats that don't support alpha blending    IDirect3D9* pD3D = DXUTGetD3D9Object();    if( FAILED( pD3D->CheckDeviceFormat( pCaps->AdapterOrdinal, pCaps->DeviceType,                                         AdapterFormat, D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING,                                         D3DRTYPE_TEXTURE, BackBufferFormat ) ) )        return false;    return true;}//--------------------------------------------------------------------------------------// Before a device is created, modify the device settings as needed//--------------------------------------------------------------------------------------bool CALLBACK ModifyDeviceSettings( DXUTDeviceSettings* pDeviceSettings, void* pUserContext ){    return true;}//--------------------------------------------------------------------------------------// Create any D3D9 resources that will live through a device reset (D3DPOOL_MANAGED)// and aren't tied to the back buffer size//--------------------------------------------------------------------------------------HRESULT CALLBACK OnD3D9CreateDevice( IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc,                                     void* pUserContext ){    return S_OK;}//--------------------------------------------------------------------------------------// Create any D3D9 resources that won't live through a device reset (D3DPOOL_DEFAULT) // or that are tied to the back buffer size //--------------------------------------------------------------------------------------HRESULT CALLBACK OnD3D9ResetDevice( IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc,                                    void* pUserContext ){    return S_OK;}//--------------------------------------------------------------------------------------// Handle updates to the scene.  This is called regardless of which D3D API is used//--------------------------------------------------------------------------------------void CALLBACK OnFrameMove( double fTime, float fElapsedTime, void* pUserContext ){}//--------------------------------------------------------------------------------------// Render the scene using the D3D9 device//--------------------------------------------------------------------------------------void CALLBACK OnD3D9FrameRender( IDirect3DDevice9* pd3dDevice, double fTime, float fElapsedTime, void* pUserContext ){    HRESULT hr;    // Clear the render target and the zbuffer     V( pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_ARGB( 0, 45, 50, 170 ), 1.0f, 0 ) );    // Render the scene    if( SUCCEEDED( pd3dDevice->BeginScene() ) )    {        V( pd3dDevice->EndScene() );    }}//--------------------------------------------------------------------------------------// Handle messages to the application //--------------------------------------------------------------------------------------LRESULT CALLBACK MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam,                          bool* pbNoFurtherProcessing, void* pUserContext ){    return 0;}//--------------------------------------------------------------------------------------// Release D3D9 resources created in the OnD3D9ResetDevice callback //--------------------------------------------------------------------------------------void CALLBACK OnD3D9LostDevice( void* pUserContext ){}//--------------------------------------------------------------------------------------// Release D3D9 resources created in the OnD3D9CreateDevice callback //--------------------------------------------------------------------------------------void CALLBACK OnD3D9DestroyDevice( void* pUserContext ){}//--------------------------------------------------------------------------------------// Initialize everything and go into a render loop//--------------------------------------------------------------------------------------INT WINAPI wWinMain( HINSTANCE, HINSTANCE, LPWSTR, int ){    // Enable run-time memory check for debug builds.#if defined(DEBUG) | defined(_DEBUG)    _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );#endif    // Set the callback functions    DXUTSetCallbackD3D9DeviceAcceptable( IsD3D9DeviceAcceptable );    DXUTSetCallbackD3D9DeviceCreated( OnD3D9CreateDevice );    DXUTSetCallbackD3D9DeviceReset( OnD3D9ResetDevice );    DXUTSetCallbackD3D9FrameRender( OnD3D9FrameRender );    DXUTSetCallbackD3D9DeviceLost( OnD3D9LostDevice );    DXUTSetCallbackD3D9DeviceDestroyed( OnD3D9DestroyDevice );    DXUTSetCallbackDeviceChanging( ModifyDeviceSettings );    DXUTSetCallbackMsgProc( MsgProc );    DXUTSetCallbackFrameMove( OnFrameMove );    // TODO: Perform any application-level initialization here    // Initialize DXUT and create the desired Win32 window and Direct3D device for the application    DXUTInit( true, true ); // Parse the command line and show msgboxes    DXUTSetHotkeyHandling( true, true, true );  // handle the default hotkeys    DXUTSetCursorSettings( true, true ); // Show the cursor and clip it when in full screen    DXUTCreateWindow( L"EmptyProject" );    DXUTCreateDevice( true, 640, 480 );    // Start the render loop    DXUTMainLoop();    // TODO: Perform any application-level cleanup here    return DXUTGetExitCode();}

The above is the Framework Code. Like MFC, it is automatically generated and does not need to be too detailed. You only need to know the function name and the code to be written under the function.

Directx9.0 tutorial 2-using the dxut framework

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.