亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? myfire1view.cpp

?? 用VC++與OPENGL研發(fā)的粒子系統(tǒng)的模擬程序
?? CPP
字號:
// MyFire1View.cpp : implementation of the CMyFire1View class
//

#include "stdafx.h"
#include "MyFire1.h"

#include "MyFire1Doc.h"
#include "MyFire1View.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMyFire1View

IMPLEMENT_DYNCREATE(CMyFire1View, CView)

BEGIN_MESSAGE_MAP(CMyFire1View, CView)
	//{{AFX_MSG_MAP(CMyFire1View)
	ON_WM_CREATE()
	ON_WM_DESTROY()
	ON_WM_SIZE()
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyFire1View construction/destruction

CMyFire1View::CMyFire1View()
{
	// TODO: add construction code here

}

CMyFire1View::~CMyFire1View()
{
}

BOOL CMyFire1View::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
////////////////////////////////////////////////////////////////
//設(shè)置窗口類型
	cs.style |=WS_CLIPCHILDREN | WS_CLIPSIBLINGS;
////////////////////////////////////////////////////////////////
	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CMyFire1View drawing

void CMyFire1View::OnDraw(CDC* pDC)
{
	CMyFire1Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
//////////////////////////////////////////////////////////////////
	RenderScene();	//渲染場景
//////////////////////////////////////////////////////////////////

}

/////////////////////////////////////////////////////////////////////////////
// CMyFire1View printing

BOOL CMyFire1View::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CMyFire1View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CMyFire1View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CMyFire1View diagnostics

#ifdef _DEBUG
void CMyFire1View::AssertValid() const
{
	CView::AssertValid();
}

void CMyFire1View::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CMyFire1Doc* CMyFire1View::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyFire1Doc)));
	return (CMyFire1Doc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMyFire1View message handlers

int CMyFire1View::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
//////////////////////////////////////////////////////////////////
//初始化OpenGL和設(shè)置定時器
	m_pDC = new CClientDC(this);
	SetTimer(1, 20, NULL);
	InitializeOpenGL(m_pDC);
//////////////////////////////////////////////////////////////////
	InitGL();	
	return 0;
}

void CMyFire1View::OnDestroy() 
{
	CView::OnDestroy();
	
	// TODO: Add your message handler code here
/////////////////////////////////////////////////////////////////
//刪除調(diào)色板和渲染上下文、定時器
	::wglMakeCurrent(0,0);
	::wglDeleteContext( m_hRC);
	if (m_hPalette)
	    DeleteObject(m_hPalette);
	if ( m_pDC )
	{
		delete m_pDC;
	}
	KillTimer(1);		
/////////////////////////////////////////////////////////////////
	
}

void CMyFire1View::OnSize(UINT nType, int cx, int cy) 
{
	CView::OnSize(nType, cx, cy);
	
	// TODO: Add your message handler code here
/////////////////////////////////////////////////////////////////
//添加窗口縮放時的圖形變換函數(shù)
	glViewport(0,0,cx,cy);
/////////////////////////////////////////////////////////////////
	glMatrixMode(GL_PROJECTION);	// 選擇投影矩陣
	glLoadIdentity();				// 設(shè)置投影矩陣
	// 根據(jù)窗口的比例設(shè)置變換
	gluPerspective(45.0f,(GLfloat)cx/(GLfloat)cy,0.1f,100.0f);
	glMatrixMode(GL_MODELVIEW);		// 選擇模型矩陣
	glLoadIdentity();				// 設(shè)置模型矩陣
	
}

void CMyFire1View::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
/////////////////////////////////////////////////////////////////
//添加定時器響應(yīng)函數(shù)和場景更新函數(shù)
	Invalidate(FALSE);	
/////////////////////////////////////////////////////////////////
	
	CView::OnTimer(nIDEvent);
}

/////////////////////////////////////////////////////////////////////
//	                  設(shè)置邏輯調(diào)色板
//////////////////////////////////////////////////////////////////////
void CMyFire1View::SetLogicalPalette(void)
{
    struct
    {
        WORD Version;
        WORD NumberOfEntries;
        PALETTEENTRY aEntries[256];
    } logicalPalette = { 0x300, 256 };

	BYTE reds[] = {0, 36, 72, 109, 145, 182, 218, 255};
	BYTE greens[] = {0, 36, 72, 109, 145, 182, 218, 255};
	BYTE blues[] = {0, 85, 170, 255};

    for (int colorNum=0; colorNum<256; ++colorNum)
    {
        logicalPalette.aEntries[colorNum].peRed =
            reds[colorNum & 0x07];
        logicalPalette.aEntries[colorNum].peGreen =
            greens[(colorNum >> 0x03) & 0x07];
        logicalPalette.aEntries[colorNum].peBlue =
            blues[(colorNum >> 0x06) & 0x03];
        logicalPalette.aEntries[colorNum].peFlags = 0;
    }

    m_hPalette = CreatePalette ((LOGPALETTE*)&logicalPalette);
}


//////////////////////////////////////////////////////////
//						初始化openGL場景
//////////////////////////////////////////////////////////
BOOL CMyFire1View::InitializeOpenGL(CDC* pDC)
{
	m_pDC = pDC;
	SetupPixelFormat();
	//生成繪制描述表
	m_hRC = ::wglCreateContext(m_pDC->GetSafeHdc());
	//置當(dāng)前繪制描述表
	::wglMakeCurrent(m_pDC->GetSafeHdc(), m_hRC);

	return TRUE;
}

//////////////////////////////////////////////////////////
//						設(shè)置像素格式
//////////////////////////////////////////////////////////
BOOL CMyFire1View::SetupPixelFormat()
{
	PIXELFORMATDESCRIPTOR pfd = { 
	    sizeof(PIXELFORMATDESCRIPTOR),    // pfd結(jié)構(gòu)的大小 
	    1,                                // 版本號 
	    PFD_DRAW_TO_WINDOW |              // 支持在窗口中繪圖 
	    PFD_SUPPORT_OPENGL |              // 支持 OpenGL 
	    PFD_DOUBLEBUFFER,                 // 雙緩存模式 
	    PFD_TYPE_RGBA,                    // RGBA 顏色模式 
	    24,                               // 24 位顏色深度 
	    0, 0, 0, 0, 0, 0,                 // 忽略顏色位 
	    0,                                // 沒有非透明度緩存 
	    0,                                // 忽略移位位 
	    0,                                // 無累加緩存 
	    0, 0, 0, 0,                       // 忽略累加位 
	    32,                               // 32 位深度緩存     
	    0,                                // 無模板緩存 
	    0,                                // 無輔助緩存 
	    PFD_MAIN_PLANE,                   // 主層 
	    0,                                // 保留 
	    0, 0, 0                           // 忽略層,可見性和損毀掩模 
	}; 	
	int pixelformat;
	pixelformat = ::ChoosePixelFormat(m_pDC->GetSafeHdc(), &pfd);//選擇像素格式
	::SetPixelFormat(m_pDC->GetSafeHdc(), pixelformat, &pfd);	//設(shè)置像素格式
	if(pfd.dwFlags & PFD_NEED_PALETTE)
		SetLogicalPalette();	//設(shè)置邏輯調(diào)色板
	return TRUE;
}

//////////////////////////////////////////////////////////
//						場景繪制與渲染
//////////////////////////////////////////////////////////
BOOL CMyFire1View::RenderScene() 
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);	
	glLoadIdentity();									
	frame++;
	frame=frame%2;
	if(frame==0)
	{
		if(freeze==false)
		Fuoco();	// 生成火焰
	}
	glTranslatef(0.1f,0.0f,-2.7f);
	ShowFire(0,0,0,(float)0.1);		// 顯示火焰

	::SwapBuffers(m_pDC->GetSafeHdc());		// 交互緩沖區(qū)
	return TRUE;
}

COL CMyFire1View::Colore(float k)
{
	COL c;
	if( k<64 )
	{
		c.r=k/64;
		c.g=0;
		c.b=0;
	}
	else
	{
		if(k<128)
		{
			c.r=1;
			c.g=k/128;
			c.b=0;
		}
		else
		{
			if(k<192)
			{
				c.r=1;
				c.g=1;
				c.b=k/192;
			}
			else
			{
				c.r=1;
				c.g=1;
				c.b=1;
			}
		}
	}
	return(c);
}

void CMyFire1View::ShowFire(float x,float y,float z,float dim)
{
	float xi,yi;
	float ka,kb,kc,kd;
	COL col;
	int xd,yd;

	yi=y+dim*FIREY/2;

	for(yd=0;yd<FIREY-1;yd++)
	{
		xi=x-dim*FIREX/2;
		for(xd=1;xd<FIREX-1;xd++)
		{
			ka=(float)Bfire[xd][yd];
			kb=(float)Bfire[xd+1][yd];
			kc=(float)Bfire[xd+1][yd+1];
			kd=(float)Bfire[xd][yd+1];

			glBegin(GL_QUADS);		// 繪制四邊形
				col=Colore(kd);
				glColor3f(col.r,col.g,col.b);
				glVertex3f(xi,yi,z);
				col=Colore(kc);
				glColor3f(col.r,col.g,col.b);
				glVertex3f(xi+dim,yi,z);
				col=Colore(kb);
				glColor3f(col.r,col.g,col.b);
				glVertex3f(xi+dim,yi+dim,z);
				col=Colore(ka);
				glColor3f(col.r,col.g,col.b);
				glVertex3f(xi,yi+dim,z);
			glEnd();			
			xi+=dim;
		}
		yi-=dim;
	}
}

void CMyFire1View::Fuoco(void)
{
	int x,y;
	int k;

	for(x=8;x<FIREX-8;x++)
		Bfire[x][FIREY-1]=rand()%192;

	for(x=0;x<5;x++)
		Bfire[rand()%FIREX][FIREY-1]=0;

	for(y=0;y<FIREY-1;y++)
	{
		for(x=1;x<FIREX-1;x++)
		{
			k=Bfire[x][y]+Bfire[x-1][y+1]+Bfire[x+1][y+1]+Bfire[x][y+1];
			k=k/4-2;
			if(k<0)
				k=0;
			Bfire[x][y]=(unsigned char)k;
		}
	}
}

int CMyFire1View::InitGL(GLvoid)										
{
	glShadeModel(GL_SMOOTH);							
	glClearColor(0.0f, 0.0f, 0.0f, 0.5f);				
	glClearDepth(1.0f);									
	glEnable(GL_DEPTH_TEST);							
	glDepthFunc(GL_LEQUAL);								
	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);	

	for(int y=0;y<FIREY;y++)
	{
		for(int x=0;x<FIREX;x++)
			Bfire[x][y]=0;
	}

	freeze=false;
	frame=0;
	return TRUE;										
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91网页版在线| 国产综合久久久久久久久久久久| 91九色最新地址| 国产呦萝稀缺另类资源| 免费成人小视频| 免费看日韩精品| 中文字幕在线观看不卡视频| 91麻豆精品国产91久久久使用方法| 成人涩涩免费视频| 久久国产麻豆精品| 美女视频免费一区| 亚洲成人av资源| 亚洲精品美腿丝袜| 亚洲一区在线视频观看| 精品久久久久久无| 91精品久久久久久蜜臀| 在线免费精品视频| 成人av电影免费在线播放| 国产自产视频一区二区三区| 精油按摩中文字幕久久| 国产精品77777| 国产又粗又猛又爽又黄91精品| 蜜桃一区二区三区在线观看| 日本成人在线一区| 国产精品91一区二区| 日韩精品色哟哟| 樱花影视一区二区| 国产精品久久久久影院| 18欧美乱大交hd1984| 亚洲精品国产第一综合99久久| 中文字幕乱码日本亚洲一区二区| 国产区在线观看成人精品| 中文字幕av资源一区| 一区二区三区欧美激情| 亚洲成人动漫精品| 懂色av一区二区三区蜜臀| 91丨porny丨首页| 日韩欧美亚洲国产另类| 亚洲欧洲中文日韩久久av乱码| 丝袜a∨在线一区二区三区不卡| 日韩精品视频网| 麻豆91免费观看| 高清不卡在线观看| 欧美日韩日日摸| 中文天堂在线一区| 麻豆精品一区二区综合av| 成人综合婷婷国产精品久久| 欧美日韩国产免费| 欧美国产日韩a欧美在线观看| 亚洲成av人片在www色猫咪| 国产成人综合在线| 精品成人在线观看| 精品福利视频一区二区三区| 一区二区三区在线观看视频| 视频在线观看一区| 91福利资源站| 亚洲人成小说网站色在线| 日本欧美肥老太交大片| 欧美一区在线视频| 亚洲欧美国产三级| 成人午夜激情片| 欧美激情综合五月色丁香小说| 日本伊人色综合网| 欧美精品视频www在线观看| 国产精品成人免费在线| 国产一区二区在线影院| 欧美一级免费大片| 捆绑变态av一区二区三区| 欧美va亚洲va香蕉在线| 综合久久久久综合| 亚洲国产精品久久一线不卡| 日韩高清不卡一区二区三区| 久久精品一区八戒影视| 成人av在线播放网址| 欧美sm美女调教| 国产精品18久久久久久久久| 久久久久国产精品麻豆ai换脸| 国产精品影视网| 国产午夜精品一区二区三区视频 | 免费av成人在线| 欧美欧美欧美欧美| 蜜桃av一区二区三区| 日韩午夜激情电影| 国产成人精品免费网站| 亚洲欧美怡红院| 日韩情涩欧美日韩视频| 国产成人午夜高潮毛片| 中文字幕制服丝袜一区二区三区 | 亚洲精品欧美在线| 欧美日韩国产另类一区| 国产精品亚洲第一区在线暖暖韩国| 日韩一区国产二区欧美三区| 狠狠色丁香久久婷婷综合_中| 久久久蜜臀国产一区二区| 国产精品99久久久久| 亚洲久草在线视频| 日韩精品中文字幕一区二区三区| 久久精品噜噜噜成人av农村| 国产欧美日韩不卡| 7777精品伊人久久久大香线蕉完整版 | 欧美成人a∨高清免费观看| 久久国产婷婷国产香蕉| 亚洲国产高清aⅴ视频| 在线看日韩精品电影| 国产黑丝在线一区二区三区| 一区二区在线观看免费| 日韩欧美国产电影| 欧美唯美清纯偷拍| 国产东北露脸精品视频| 麻豆成人av在线| 亚洲欧美另类久久久精品2019| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 亚洲18女电影在线观看| 久久久91精品国产一区二区精品| 欧美午夜精品久久久| gogo大胆日本视频一区| 国产一区二区三区久久久 | 韩国欧美国产一区| 五月天欧美精品| 亚洲小说欧美激情另类| 一区二区三区在线视频免费 | 亚洲成人av一区| 国产精品成人一区二区艾草 | 欧美性猛片xxxx免费看久爱| 91麻豆精品在线观看| 91精品办公室少妇高潮对白| 99视频热这里只有精品免费| 欧洲日韩一区二区三区| 91精品福利在线| 91精品在线观看入口| 欧美一级黄色大片| 久久久噜噜噜久噜久久综合| 国产人久久人人人人爽| 亚洲天堂网中文字| 亚洲国产综合人成综合网站| 亚洲一二三区在线观看| 日韩综合小视频| 国产一区二区三区久久久| 色综合天天天天做夜夜夜夜做| 色综合天天做天天爱| 91丨九色丨国产丨porny| 91首页免费视频| 555夜色666亚洲国产免| 4hu四虎永久在线影院成人| 欧美大片国产精品| 国产人成一区二区三区影院| 亚洲视频一区二区在线| 天天免费综合色| 日韩精品自拍偷拍| 亚洲欧美一区二区三区久本道91| 亚洲国产你懂的| 丁香六月综合激情| 日韩一级在线观看| 最近日韩中文字幕| 狠狠色综合播放一区二区| 91片在线免费观看| 久久久av毛片精品| 亚洲第四色夜色| 成人性生交大片免费看中文| 欧美一区2区视频在线观看| 亚洲乱码国产乱码精品精98午夜| 久久精品久久久精品美女| 欧美专区日韩专区| 日本一区二区三级电影在线观看| 国产一区美女在线| 欧美色区777第一页| 国产精品污www在线观看| 激情综合色播激情啊| 欧美日韩一区三区| 亚洲日本va午夜在线影院| 丁香婷婷综合色啪| 久久影院电视剧免费观看| 日韩主播视频在线| 欧美日韩国产影片| 青青草原综合久久大伊人精品优势| 91视频观看视频| 亚洲天堂成人网| 色综合久久综合网97色综合| 国产精品国产三级国产aⅴ中文| 丁香桃色午夜亚洲一区二区三区| 欧美一三区三区四区免费在线看 | 欧美日韩一区二区三区视频 | 一区二区三区在线看| 在线免费观看日本欧美| 亚洲va天堂va国产va久| 欧美妇女性影城| 免费在线看成人av| 国产欧美精品一区二区三区四区| 国产传媒欧美日韩成人| 中文成人av在线| 欧美性大战久久久久久久蜜臀| 亚洲电影在线播放| 日韩欧美一区二区三区在线| 国产在线观看一区二区| 欧美国产精品一区二区三区| 91福利在线观看| 青青草视频一区| 亚洲欧洲韩国日本视频| 亚洲人成电影网站色mp4| 欧美三级午夜理伦三级中视频|