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

📄 effect.h

📁 涉及windows游戏编程中的一些源码
💻 H
字号:
/******************************************************************   
  模块名称:
       Effect.h
   目的: 
      效果器的实现文件。

   作者:
        潘李亮 2003 - 5

  所有的后期特殊效果处理代码,
  在本程序里。所有的效果以MotionBlur开始,形成一条效果链。
  所有的效果处理器都是一个CEffect的子类
******************************************************************/

#ifndef _EFFECT_H_
#define _EFFECT_H_

#include <windows.h>
#include <GL\gl.h>

#include "Camera.h"
class CEffect  
{
public:
	CEffect();
	virtual       ~CEffect();
	BOOL          IsEffect(){return m_isEffected;}

//查询一个效果器是不是需要拷贝图象到纹理里作为处理用。
	virtual BOOL  IsNeedFrameTex(){return m_isEffected;}
//查询效果器是不是打开,也就是是不是处于有效的状态
	void          SetEffect(BOOL bFlag){m_isEffected = bFlag;}
	virtual BOOL  Render(GLuint texID, float tcx, float tcy,int view_x,int view_y) = 0;
protected:
	BOOL m_isEffected;
};

//过度的加亮,形成过度曝光的效果
class COverBurtEff :public CEffect
{
	    float m_val;
public:
    	void SetValue(float v);
    	float GetValue();
        COverBurtEff();
		virtual BOOL Render(GLuint texID, float tcx, float tcy,int view_x,int view_y);
};

//地图导航
class CMapPilotEff:public CEffect
{
	GLuint  m_TerrTex;
	CAMERA_INFO * m_pCmInfo;
	int m_w,m_h;
public:
	CMapPilotEff(){};
	void    SetTerrainSize(int x,int y){m_w = x;m_h = y;}
	void    SetCamraInfo(CCamera* pCm){m_pCmInfo = pCm->GetCameraInfo();}
	void    SetTerrainTex(GLuint tex){m_TerrTex = tex;}
	virtual BOOL  IsNeedFrameTex(){return FALSE;}
	virtual BOOL  Render(GLuint texID, float tcx, float tcy,int view_x,int view_y);
};

//Gama控制器效果
class CGamaEff: public CEffect 
{
public:
	float   GetValue(){return m_gama;}
	virtual BOOL  Render(GLuint texID, float tcx, float tcy,int view_x,int view_y);
	void    SetValue(float f);

	virtual BOOL  IsNeedFrameTex(){return FALSE;}
	CGamaEff(){m_gama = 1.0;}
	virtual ~CGamaEff(){};

private:
	float m_gama;

};
//碎片效果
class CScrapEff: public CEffect 
{
	struct _PATCH
	{
		float x,float y;
		float angle_x,float angle_y;float angle_z;
	};

	_PATCH        _patch[20][20];
	int           m_life;
public:
	void Scrap();
	virtual BOOL  Render(GLuint texID, float tcx, float tcy,int view_x,int view_y);
	virtual BOOL  IsNeedFrameTex(){return FALSE;}
	CScrapEff();
	virtual ~CScrapEff(){};
};
class CSnipEff: public CEffect 
{
	GLuint m_texID;
public:
	virtual BOOL Render(GLuint texID, float tx, float ty,int view_x,int view_y);
	virtual BOOL  IsNeedFrameTex(){return FALSE;}
	CSnipEff(){};
	void Create(GLuint texID){m_texID = texID;};
	virtual ~CSnipEff(){};
};

class CCrossEff: public CEffect 
{
	GLuint m_texID;
public:
	virtual BOOL Render(GLuint texID, float tx, float ty,int view_x,int view_y);
	virtual BOOL  IsNeedFrameTex(){return FALSE;}
	CCrossEff(){};
	void Create(GLuint texID){m_texID = texID;};
	virtual ~CCrossEff(){};
};
#endif

⌨️ 快捷键说明

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