Template を使って Sprite でイメージを表示

August2007 DirectX9 の Template を使って Sprite でイメージを表示します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの作成

  1. Template のプロジェクトをコピーして、フォルダーの名前を SpriteImg に変更して下さい。
    Template の作成は August 2007 DirectX9 の template を作成する を参照して下さい。
  2. Sprite と Texture の領域を定義します。
    ImgFile[] でイメージファイルを設定しています。
    BMP や JPEG であれば何でも良いのですが、無ければページ先頭の画像でも使ってみて下さい。
    LPD3DXSPRITE        g_pSprite   = NULL;     // スプライト
    LPDIRECT3DTEXTURE9  g_pTexture  = NULL;     // テクスチャ
    WCHAR               ImgFile[]   = L"c:\\data\\test\\ffx2s.jpg";
    
  3. OnD3D9CreateDevice() で Sprite を生成して、g_pTexture に画像を入力します。
    HRESULT CALLBACK OnD3D9CreateDevice( IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc, void* pUserContext )
    {   HRESULT  hr;
    
        // スプライト生成
        hr = D3DXCreateSprite(pd3dDevice, &g_pSprite);
        if (FAILED(hr))
        {   MessageBox(NULL,L"CreateSprite Error",L"MainX9 Error",MB_OK);
            return hr;
        }
        // テクスチャの読み込み
        if (FAILED(D3DXCreateTextureFromFile(pd3dDevice,ImgFile,&g_pTexture)))
        {   MessageBox(NULL,ImgFile,L"Texture Load Error",MB_OK);
            return E_FAIL;
        }
    
        return S_OK;
    }
    
  4. OnD3D9FrameRender() で Sprite で画像を描画します。
    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() ) )
        {
            g_pSprite->Begin(0);
            g_pSprite->Draw(g_pTexture,NULL,NULL,NULL,0xffffffff);
            g_pSprite->End();
            V( pd3dDevice->EndScene() );
        }
    }
    
  5. OnD3D9DestroyDevice() で Sprite と Texture を開放します。
    void CALLBACK OnD3D9DestroyDevice( void* pUserContext )
    {
        SAFE_RELEASE(g_pSprite);
        SAFE_RELEASE(g_pTexture);
    }
    
  6. あとは Template で作成したソースコードのままです。
    ビルドに続いて実行すると画像が描画されます。

超初心者の方のために全ソースコードを掲載します。 (^_^;)
全ソースコード

前田稔(Maeda Minoru)の超初心者のプログラム入門

超初心者のプログラム入門(DirectX9 game program)

超初心者のプログラム入門(DirectX10 game program)