今回は画像を左右反転して描画します そろそろ全コード書くのもだるくなってきたので 今回使うファイルは次のようになってます。どぞー(-ω-)つ旦 zipでほしい人はこちら sprite.hのDrawメンバ関数の引数にisTurnフラグを追加します #pragma once // Direct3Dの各種ヘッダーのインクルードが必要なため // すでにまとめてあるヘッダーをインクルードする #include "direct3d.h" // スプライトクラス(2D板ポリゴン) class Sprite { public: // 他のメンバーは15回と同じなので略 ////////////////////////////////////////////////////////////////////////////////////////////////// // 引数isTurnを追加(省略可能な引数) void Draw(IDirect3DDevice9* pDevice3D,IDirect3DTexture9* pTexture,bool isTurn = false); ////////////////////////////////////////////////////////////////////////////////////////////////// }; sprite.cppでDrawメンバ関数の実装処理を変更します #include "sprite.h" // 他のメンバー関数の実装は15回と同じなので略 ////////////////////////////////////////////////////////////////////////////////////////////////////// void Sprite::Draw(IDirect3DDevice9* pDevice3D,IDirect3DTexture9* pTexture,bool isTurn) { // 頂点情報セット Vertex vtx[4]={ { pos.x + width/2, pos.y - height/2, 0.0f, 1.0f,(isTurn ? 0.0f : 1.0f), 0.0f}, { pos.x + width/2, pos.y + height/2, 0.0f, 1.0f,(isTurn ? 0.0f : 1.0f), 1.0f}, { pos.x - width/2, pos.y - height/2, 0.0f, 1.0f,(isTurn ? 1.0f : 0.0f), 0.0f}, { pos.x - width/2, pos.y + height/2, 0.0f, 1.0f,(isTurn ? 1.0f : 0.0f), 1.0f} }; ////////////////////////////////////////////////////////////////////////////////////////////////////// // テクスチャセット pDevice3D->SetTexture(0,pTexture); // 頂点構造体宣言セット pDevice3D->SetFVF(SPRITE_FVF); // スプライト描画 pDevice3D->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP,2,vtx,sizeof(Vertex)); } ポイントはただ1点、 頂点情報のUV値のU値をひっくりかえしているだけです 使うとき(turn.cpp側)は次のようになります /////////////////////////////////////////////////////////////////////////////////////////////// // 描画開始 if(SUCCEEDED(direct3d.pDevice3D->BeginScene())) { DWORD ClearColor = 0xff808080; // 背景クリア色 // 背景クリア direct3d.pDevice3D->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_STENCIL | D3DCLEAR_ZBUFFER, ClearColor, 1.0f, 0 ); // スプライト描画 sprite[0].Draw(direct3d.pDevice3D,cartex.pTexture); // 省略した場合、引数isTurnはfalseになる sprite[1].Draw(direct3d.pDevice3D,cartex.pTexture,true); // 描画終了 direct3d.pDevice3D->EndScene(); } // 描画反映 direct3d.pDevice3D->Present( NULL, NULL, NULL, NULL ); /////////////////////////////////////////////////////////////////////////////////////////////// 実行結果は次のようになります 上下反転に関しては略しますが
|