#pragma once
#define DXAPP_KEY        TEXT(\"Software\\\\DirectX AppWizard Apps\\\\Shadow\")

// Struct to store the current input state
struct UserInput
{
    // TODO: change as needed
    BOOL bRotateUp;
    BOOL bRotateDown;
    BOOL bRotateLeft;
    BOOL bRotateRight;
};
class CMyD3DApplication : public CD3DApplication
{
    BOOL                    m_bLoadingApp;          // TRUE, if the app is loading
    CD3DFont*               m_pFont;                // Font for drawing text
    ID3DXMesh*              m_pMeshOcc;    // D3DX mesh
 D3DMATERIAL9   m_matOcc;
 LPDIRECT3DTEXTURE9  m_ptexOcc;
   
 ID3DXMesh*              m_pMeshFloor;   // D3DX mesh
 D3DMATERIAL9   m_matFloor;
 LPDIRECT3DTEXTURE9  m_ptexFloor;
 
 D3DXVECTOR4    m_vLightPos;   // 그림자를 만들 광원
 D3DXPLANE    m_planeFloor;   // 그림자가 그려질 평면의 방정식
 D3DXMATRIXA16   m_matWorld;

    UserInput               m_UserInput;            // Struct for storing user input

    FLOAT                   m_fWorldRotX;           // World rotation state X-axis
    FLOAT                   m_fWorldRotY;           // World rotation state Y-axis
 BOOL     m_bWireframe;
 BOOL     m_bShadow;
protected:
    virtual HRESULT OneTimeSceneInit();
    virtual HRESULT InitDeviceObjects();
    virtual HRESULT RestoreDeviceObjects();
    virtual HRESULT InvalidateDeviceObjects();
    virtual HRESULT DeleteDeviceObjects();
    virtual HRESULT Render();
    virtual HRESULT FrameMove();
    virtual HRESULT FinalCleanup();
    virtual HRESULT ConfirmDevice( D3DCAPS9*, DWORD, D3DFORMAT );

    HRESULT RenderText();

    void    UpdateInput( UserInput* pUserInput );
 void DrawFloor();
 void DrawOcc();
 void DrawShadow();
 void DrawStencil();

public:
    LRESULT MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam );
    CMyD3DApplication();
    virtual ~CMyD3DApplication();
};

이슬픔을 알랑가모르갓어요`~ 나의 구두여~~ 너만은 떠나지마오~~