The DejaVU Framework -- hush 3.1

include: hush-src-multi-GamePlayer-d3dutil.h /home/ae/media


- [up] [top] - index make include source logic grammar scripts html configure mx slides talks scenes reports projects
<body bgcolor="#FFFFFF" text="#000000">

//-----------------------------------------------------------------------------
// File: D3DUtil.h
//
// Desc: Helper functions and typing shortcuts for Direct3D programming.
//
// Copyright (c) Microsoft Corporation. All rights reserved
//-----------------------------------------------------------------------------

ifndef D3DUTIL_H
define D3DUTIL_H
include <D3D9.h>
include <D3DX9Math.h>

//-----------------------------------------------------------------------------
// Name: D3DUtil_InitMaterial()
// Desc: Initializes a D3DMATERIAL9 structure, setting the diffuse and ambient
//       colors. It does not set emissive or specular colors.
//-----------------------------------------------------------------------------
VOID D3DUtil_InitMaterial( D3DMATERIAL9& mtrl, FLOAT r=0.0f, FLOAT g=0.0f,
                                               FLOAT b=0.0f, FLOAT a=1.0f );

//-----------------------------------------------------------------------------
// Name: D3DUtil_InitLight()
// Desc: Initializes a D3DLIGHT structure, setting the light position. The
//       diffuse color is set to white, specular and ambient left as black.
//-----------------------------------------------------------------------------
VOID D3DUtil_InitLight( D3DLIGHT9& light, D3DLIGHTTYPE ltType,
                        FLOAT x=0.0f, FLOAT y=0.0f, FLOAT z=0.0f );

//-----------------------------------------------------------------------------
// Name: D3DUtil_CreateTexture()
// Desc: Helper function to create a texture. It checks the root path first,
//       then tries the DXSDK media path (as specified in the system registry).
//-----------------------------------------------------------------------------
HRESULT D3DUtil_CreateTexture( LPDIRECT3DDEVICE9 pd3dDevice, TCHAR* strTexture,
                               LPDIRECT3DTEXTURE9* ppTexture,
                               D3DFORMAT d3dFormat = D3DFMT_UNKNOWN );

//-----------------------------------------------------------------------------
// Name: D3DUtil_GetCubeMapViewMatrix()
// Desc: Returns a view matrix for rendering to a face of a cubemap.
//-----------------------------------------------------------------------------
D3DXMATRIX D3DUtil_GetCubeMapViewMatrix( DWORD dwFace );

//-----------------------------------------------------------------------------
// Name: D3DUtil_GetRotationFromCursor()
// Desc: Returns a quaternion for the rotation implied by the window's cursor
//       position.
//-----------------------------------------------------------------------------
D3DXQUATERNION D3DUtil_GetRotationFromCursor( HWND hWnd,
                                              FLOAT fTrackBallRadius=1.0f );

//-----------------------------------------------------------------------------
// Name: D3DUtil_SetDeviceCursor
// Desc: Builds and sets a cursor for the D3D device based on hCursor.
//-----------------------------------------------------------------------------
HRESULT D3DUtil_SetDeviceCursor( LPDIRECT3DDEVICE9 pd3dDevice, HCURSOR hCursor,
                                 BOOL bAddWatermark );

//-----------------------------------------------------------------------------
// Name: D3DUtil_D3DFormatToString
// Desc: Returns the string for the given D3DFORMAT.
//       bWithPrefix determines whether the string should include the "D3DFMT_"
//-----------------------------------------------------------------------------
TCHAR* D3DUtil_D3DFormatToString( D3DFORMAT format, bool bWithPrefix = true );

//-----------------------------------------------------------------------------
// Name: class CD3DArcBall
// Desc:
//-----------------------------------------------------------------------------
<h4 align=right text=red> CD3DArcBall</h4><hr>
  class CD3DArcBall
{
    INT            m_iWidth;              // ArcBall's window width
    INT            m_iHeight;             // ArcBall's window height
    FLOAT          m_fRadius;             // ArcBall's radius in screen coords
    FLOAT          m_fRadiusTranslation;  // ArcBall's radius for translating the target

    D3DXQUATERNION m_qDown;               // Quaternion before button down
    D3DXQUATERNION m_qNow;                // Composite quaternion for current drag
    D3DXMATRIXA16  m_matRotation;         // Matrix for arcball's orientation
    D3DXMATRIXA16  m_matRotationDelta;    // Matrix for arcball's orientation
    D3DXMATRIXA16  m_matTranslation;      // Matrix for arcball's position
    D3DXMATRIXA16  m_matTranslationDelta; // Matrix for arcball's position
    BOOL           m_bDrag;               // Whether user is dragging arcball
    BOOL           m_bRightHanded;        // Whether to use RH coordinate system

    D3DXVECTOR3 ScreenToVector( int sx, int sy );

public:
    LRESULT     HandleMouseMessages( HWND, UINT, WPARAM, LPARAM );

    D3DXMATRIX* GetRotationMatrix()         { return &m_matRotation; }
    D3DXMATRIX* GetRotationDeltaMatrix()    { return &m_matRotationDelta; }
    D3DXMATRIX* GetTranslationMatrix()      { return &m_matTranslation; }
    D3DXMATRIX* GetTranslationDeltaMatrix() { return &m_matTranslationDelta; }
    BOOL        IsBeingDragged()            { return m_bDrag; }

    VOID        SetRadius( FLOAT fRadius );
    VOID        SetWindow( INT w, INT h, FLOAT r=0.9 );
    VOID        SetRightHanded( BOOL bRightHanded ) { m_bRightHanded = bRightHanded; }

                CD3DArcBall();
    VOID        Init();
};
<hr>


//-----------------------------------------------------------------------------
// Name: class CD3DCamera
// Desc:
//-----------------------------------------------------------------------------
<hr>

CD3DCamera</h4>
  class CD3DCamera
  {
      D3DXVECTOR3 m_vEyePt;       // Attributes for view matrix
      D3DXVECTOR3 m_vLookatPt;
      D3DXVECTOR3 m_vUpVec;
  
      D3DXVECTOR3 m_vView;
      D3DXVECTOR3 m_vCross;
  
      D3DXMATRIXA16  m_matView;
      D3DXMATRIXA16  m_matBillboard; // Special matrix for billboarding effects
  
      FLOAT       m_fFOV;         // Attributes for projection matrix
      FLOAT       m_fAspect;
      FLOAT       m_fNearPlane;
      FLOAT       m_fFarPlane;
      D3DXMATRIXA16  m_matProj;
  
  public:
      // Access functions
      D3DXVECTOR3 GetEyePt()           { return m_vEyePt; }
      D3DXVECTOR3 GetLookatPt()        { return m_vLookatPt; }
      D3DXVECTOR3 GetUpVec()           { return m_vUpVec; }
      D3DXVECTOR3 GetViewDir()         { return m_vView; }
      D3DXVECTOR3 GetCross()           { return m_vCross; }
  
      FLOAT       GetFOV()             { return m_fFOV; }
      FLOAT       GetAspect()          { return m_fAspect; }
      FLOAT       GetNearPlane()       { return m_fNearPlane; }
      FLOAT       GetFarPlane()        { return m_fFarPlane; }
  
      D3DXMATRIX  GetViewMatrix()      { return m_matView; }
      D3DXMATRIX  GetBillboardMatrix() { return m_matBillboard; }
      D3DXMATRIX  GetProjMatrix()      { return m_matProj; }
  
      VOID SetViewParams( D3DXVECTOR3 &vEyePt, D3DXVECTOR3& vLookatPt,
                          D3DXVECTOR3& vUpVec );
      VOID SetProjParams( FLOAT fFOV, FLOAT fAspect, FLOAT fNearPlane,
                          FLOAT fFarPlane );
  
      CD3DCamera();
  };


  
  endif // D3DUTIL_H
  
  


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author. <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-2780434-1"; urchinTracker(); </script>

Hush Online Technology
hush@cs.vu.nl
03/12/09