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

📄 filterblit.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 __FILTER_BLIT_H
#define __FILTER_BLIT_H

class CFilterBlit : public EBEffect
{
public:
    typedef enum 
    {
        FIRST_FILTER_OPTION = 0,
	    CONE_FILTER     = 0,
	    BOX9_FILTER     ,
        BOX16_FILTER    ,
        SHARPEN_FILTER  ,
	    LUMINANCE_EDGE  ,
        NUM_FILTER_OPTIONS
    } eFilterOptions;

public:
	CFilterBlit(eFilterOptions initDisplayOption);
	~CFilterBlit();
    virtual void    UpdateProperties();
	virtual void    PropertyUpdateCallback(const EBProperty* pProperty, bool bWritten);
	virtual HRESULT Initialize(LPDIRECT3DDEVICE8 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:
    HRESULT CreateTextureRenderTarget();
    void    CreateAndWriteUVOffsets(int width, int height);

private:
    typedef struct tagQuadVertex
    {
	    D3DXVECTOR3 Position;
        D3DXVECTOR2 Tex;
    } QuadVertex;

    enum 
    {
        kMaxNumPasses = 3,
    };

private:
    eFilterOptions           meDisplayOption;
    eFilterOptions           meInitDisplayOption;
    bool                     mbWireFrame;

	nv_objects::NVDevice	*m_pNVDevice;
	nv_objects::NVTexture	*mpTextureToFilter;

	DWORD			         m_dwVertexShader;
	DWORD			         m_dwLuminancePixelShader;
	DWORD			         m_dwLuminanceDiagEdgePixelShader;
	DWORD			         m_dwLuminanceSensitiveDiagEdgePixelShader;
	DWORD			         m_dwBlurPixelShader;
	DWORD			         m_dwSharpenPixelShader;

	LPDIRECT3DVERTEXBUFFER8  m_pVertexBuffer;

    IDirect3DSurface8       *mpBackbufferColor; 
    IDirect3DSurface8       *mpBackbufferDepth; 

    IDirect3DTexture8       *mpTextureFiltered[kMaxNumPasses];       
    IDirect3DSurface8       *mpFilterTarget   [kMaxNumPasses]; 
};

#endif

⌨️ 快捷键说明

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