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

📄 triangle.h

📁 基于引擎基础上开发的三维游戏实例“恐怖之战”游戏者可以自爱三维地形上漫游
💻 H
字号:
// Triangle.h: interface for the CTriangle class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_TRIANGLE_H__28661FC8_C613_4101_92D0_F99BABE81CBD__INCLUDED_)
#define AFX_TRIANGLE_H__28661FC8_C613_4101_92D0_F99BABE81CBD__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <vcg/Point3.h>
#include <vector>
using namespace std;
using namespace vcg;

class Vertex
{
	public:
		//定点的坐标
		Point3f v;
		//顶点的法向量
		Point3f n;
		//顶点的颜色
		Point3f c;
		//顶点的纹理坐标
		Point3f t;
};

class CTriangle  
{
public:
	//缺省的构造函数
	CTriangle();
	//以三个顶点作为参数的构造函数
	CTriangle(Point3f const &v0,Point3f const &v1,Point3f const &v2);
	//析构函数
	virtual ~CTriangle();
	//三角形的三个顶点
	Vertex v[3];
	//计算三角形面的法向量
	void CalcNormal();
	void Flip();
	inline bool operator <  ( CTriangle const & p ) const 
	{
		return	(v[2].v!=p.v[2].v)?(v[2].v<p.v[2].v):
							(v[1].v!=p.v[1].v)?(v[1].v<p.v[1].v):
							(v[0].v<p.v[0].v);
	}
	inline bool operator == ( CTriangle const & p ) const 
	{
		return (v[0].v==p.v[0].v && v[1].v==p.v[1].v && v[2].v==p.v[2].v);
	} 

};

class CMesh
{
public:

	CMesh();
 	virtual ~CMesh();

	vector<CTriangle> T;
	int dl;
	GLuint ti;
	int Draw();
	void GenerateDL();
	int DrawDL();
	int DrawA();
	void Open(char *filename);
	bool has_color;
	bool has_texture;
	void OpenColor(char *filename);
	void OpenNormal(char *filename);
	void Smooth();
	void Normalize(float size=1);
	void Flip();
	void SetTexture(char *filename);
	void SetTexture(GLuint TextInd);
	enum mapmode {PLANAR,CYLINDRICAL} mm;
	void SetMapMode(mapmode m);
};

#endif // !defined(AFX_TRIANGLE_H__28661FC8_C613_4101_92D0_F99BABE81CBD__INCLUDED_)

⌨️ 快捷键说明

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