Files
computer-graphics/HouseTextureMapping/ZBuffer.h
T
2024-11-26 10:51:13 +08:00

46 lines
1.4 KiB
C++

// ZBuffer.h: interface for the CZBuffer class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_ZBUFFER_H__ED93E842_7399_49B8_B579_6A52FBA1289D__INCLUDED_)
#define AFX_ZBUFFER_H__ED93E842_7399_49B8_B579_6A52FBA1289D__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "Pi3.h"//三维点头文件
#include "Bucket.h"//桶头文件
#include "Vector.h"//矢量头文件
#include "Lighting.h"
#include "Material.h"
class CZBuffer
{
public:
CZBuffer();
virtual ~CZBuffer();
void CreateBucket();//创建桶
void CreateEdge();//边表
void AddEt(CAET *);//合并ET表
void ETOrder();//ET表排序
void Phong(CDC *,CP3,CLighting *,CMaterial *,COLORREF **);//Phong填充函数
void InitDeepBuffer(int,int,double);//初始化深度缓冲器
CRGB Interpolation(double,double,double,CRGB,CRGB);//颜色线性插值
CVector Interpolation(double,double,double,CVector,CVector);//法矢线性插值
CT2 Interpolation(double,double,double,CT2,CT2);//纹理线性插值
void SetPoint(CPi3 *,CVector *,CT2 *,int);
void ClearMemory();//清理内存
void DeleteAETChain(CAET* pAET);//删除边表
protected:
int PNum;//顶点个数
CPi3 *P;//顶点数组
CVector *N;//顶点的法矢量动态数组
CT2 *T;//纹理动态数组
CAET *pHeadE,*pCurrentE,*pEdge;//有效边表结点指针
CBucket *pCurrentB,*pHeadB;
double **zBuffer;//缓深度冲区
int Width,Height;//缓冲区参数
};
#endif // !defined(AFX_ZBUFFER_H__ED93E842_7399_49B8_B579_6A52FBA1289D__INCLUDED_)