⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shader_motionblur.h

📁 游戏编程精华02-含有几十个游戏编程例子
💻 H
字号:
/******************************************************************************

  Copyright (C) 1999, 2000 NVIDIA Corporation
  This file is provided without support, instruction, or implied warranty of any
  kind.  NVIDIA makes no guarantee of its fitness for a particular purpose and is
  not liable under any circumstances for any damages or loss whatsoever arising
  from the use or inability to use this file or items derived from it.
       
        
******************************************************************************/

#ifndef __SHADER_MOTIONBLUR_H
#define __SHADER_MOTIONBLUR_H

class CShaderMotionBlur;

class MotionBlurVertex
{
public:
	D3DXVECTOR3 Position;
	D3DXVECTOR3 Normal;
	D3DXVECTOR2 Texture;
};

#define MOTIONBLURVERTEX_FVF (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1)
#define BACKGROUND_COLOR     0x0099aaee

// device overrides
class NVMotionBlurDevice : public nv_objects::NVDevice
{
public:
	NVMotionBlurDevice(LPDIRECT3DDEVICE8 pDev = NULL, CShaderMotionBlur* pMotionBlur = NULL) 
		: NVDevice(pDev),
			m_pMotionBlurShader(pMotionBlur)
	{ };
	
	CShaderMotionBlur* m_pMotionBlurShader;
};

class CShaderMotionBlur: public EBEffect
{
public:
	CShaderMotionBlur();
	~CShaderMotionBlur();
	virtual void UpdateProperties();
	virtual HRESULT Initialize(IDirect3DDevice8* pDev);
	virtual HRESULT Free();
	virtual HRESULT Start();
	virtual HRESULT Tick(EBTimer* pTimer);
	virtual HRESULT ConfirmDevice(D3DCAPS8* pCaps, DWORD dwBehavior, D3DFORMAT Format);
    virtual void    Keyboard(DWORD dwKey, UINT nFlags, bool bDown);

private:
    typedef enum tageBlurLengths
    {
        FIRST_BLURLENGTH = 0,
	    HALFxBLURLENGTH  = 0,
	    ONExBLURLENGTH,
        ONEHALFxBLURLENGTH,
        NUM_BLURLENGTHS,
    } eBlurLengths;

private:
	friend class NVMotionBlurDevice;

	HRESULT SetTransform(bool bWithBlur);

	NVMotionBlurDevice*     m_pNVDevice;

	// The floor
	nv_objects::NVMesh*     m_pFloorMesh;
	nv_objects::NVMesh*     m_pBlurredObjectMesh;
    LPDIRECT3DTEXTURE8		m_pBlurredObjectMap;
     
    // the blurred object
    LPDIRECT3DVERTEXBUFFER8 m_pBlurredObjectVB;
	LPDIRECT3DINDEXBUFFER8  m_pBlurredObjectIB[6];
    DWORD                   m_numVertices;
    DWORD                   m_numIndices;

    DWORD                   m_dwMotionBlurShader;

    D3DXMATRIX              m_LastWorldTxf;
    float                   m_OneOverExtent;

    bool                    m_bEnableMotionBlur;
    bool                    m_bEnableSpeed2x;
    bool                    m_bPause;
    eBlurLengths            meBlurLengthOption;
    bool                    mbWireFrame;
};

#endif //__SHADER_MOTIONBLUR_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -