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

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

?? renderview.cpp

?? 程序可用來學(xué)習(xí)使用
?? CPP
字號(hào):
// RenderView.cpp
// Created : 05/17/1999
// Modified: 10/26/1999
#include "stdafx.h"
#include "MyTemplate.h"
#include <GL/glaux.h>
#include <math.h>
#include "MyTemplateDoc.h"
#include "RenderView.h"

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

// CRenderView
IMPLEMENT_DYNCREATE(CRenderView, CView)

BEGIN_MESSAGE_MAP(CRenderView, CView)
//{{AFX_MSG_MAP(CRenderView)
ON_WM_DESTROY()
ON_WM_SIZE()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
ON_WM_PAINT()
ON_WM_TIMER()
ON_WM_CREATE()
//}}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()

// CRenderView構(gòu)造函數(shù)/destruction
CRenderView::CRenderView()
{
	// OpenGL
	m_hGLContext = NULL;
	m_GLPixelIndex = 0;
	
	// Mouse
	m_LeftButtonDown = FALSE;
	m_RightButtonDown = FALSE;
	m_CursorRotation = AfxGetApp()->LoadCursor(IDC_CURSOR_ROTATION);

	// Colors
	CMyTemplateApp *pApp = (CMyTemplateApp *)AfxGetApp();
	InitGeometry();
}

// CRenderView析構(gòu)函數(shù)
CRenderView::~CRenderView()
{
}

// 初始化一些全局變量
void CRenderView::InitGeometry(void)
{
	m_xRotation = 0.0f;
	m_yRotation = 0.0f;
	m_xTranslation = 0.0f;
	m_yTranslation = 0.0f;
	m_zTranslation = -3.0f;
	m_xScaling = 0.5f;
	m_yScaling = 0.5f;
	m_zScaling = 0.5f;
}

BOOL CRenderView::PreCreateWindow(CREATESTRUCT& cs)
{
	return CView::PreCreateWindow(cs);
}

void CRenderView::OnDraw(CDC* pDC)
{
	CMyTemplateDoc *pDoc = GetDocument();
	ASSERT(pDoc);
}

// CRenderView打印
BOOL CRenderView::OnPreparePrinting(CPrintInfo* pInfo)
{
	return DoPreparePrinting(pInfo);
}

// 開始打印
void CRenderView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
}

// 結(jié)束打印
void CRenderView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
}

// CRenderView診斷
#ifdef _DEBUG
void CRenderView::AssertValid() const
{
	CView::AssertValid();
}

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

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

// 類的創(chuàng)建函數(shù)
// 可以在其中創(chuàng)建OpenGL的繪制描述表
int CRenderView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	HWND hWnd = GetSafeHwnd();
	HDC hDC = ::GetDC(hWnd);

	if(SetWindowPixelFormat(hDC)==FALSE)
		return 0;
	
	if(CreateViewGLContext(hDC)==FALSE)
		return 0;
	
	// 設(shè)置多邊形繪制的缺省模式
	glPolygonMode(GL_FRONT,GL_LINE);
	glPolygonMode(GL_BACK,GL_LINE);
	glShadeModel(GL_FLAT);
	glEnable(GL_NORMALIZE);

	// 設(shè)置光照及材質(zhì)的屬性
	GLfloat	ambientProperties[]  = {0.5f, 0.5f, 0.5f, 1.0f};
	GLfloat	diffuseProperties[]  = {0.8f, 0.8f, 0.8f, 1.0f};
	GLfloat	specularProperties[] = {0.0f, 0.8f, 0.2f, 1.0f};
	
	glClearDepth( 1.0f );

	m_ClearColorRed=1.0f;
	m_ClearColorGreen=1.0f;
	m_ClearColorBlue=1.0f;
	
	glLightfv( GL_LIGHT0, GL_AMBIENT, ambientProperties);
	glLightfv( GL_LIGHT0, GL_DIFFUSE, diffuseProperties);
	glLightfv( GL_LIGHT0, GL_SPECULAR, specularProperties);
	glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, 1.0f);

	// 缺省情況下加光照
	glEnable(GL_LIGHT0);
	glEnable(GL_LIGHTING);
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glClearColor(m_ClearColorRed,m_ClearColorGreen,m_ClearColorBlue,1.0f);
	// 設(shè)置定時(shí)器為0.1秒
	SetTimer( 0, 100, NULL);
	return 0;
}

// 設(shè)置窗口的象素格式
BOOL CRenderView::SetWindowPixelFormat(HDC hDC)
{
	PIXELFORMATDESCRIPTOR pixelDesc;
	
	pixelDesc.nSize = sizeof(PIXELFORMATDESCRIPTOR);
	pixelDesc.nVersion = 1;
	
	pixelDesc.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL |
		PFD_DOUBLEBUFFER | PFD_STEREO_DONTCARE;
	
	pixelDesc.iPixelType = PFD_TYPE_RGBA;
	pixelDesc.cColorBits = 32;
	pixelDesc.cRedBits = 8;
	pixelDesc.cRedShift = 16;
	pixelDesc.cGreenBits = 8;
	pixelDesc.cGreenShift = 8;
	pixelDesc.cBlueBits = 8;
	pixelDesc.cBlueShift = 0;
	pixelDesc.cAlphaBits = 0;
	pixelDesc.cAlphaShift = 0;
	pixelDesc.cAccumBits = 64;
	pixelDesc.cAccumRedBits = 16;
	pixelDesc.cAccumGreenBits = 16;
	pixelDesc.cAccumBlueBits = 16;
	pixelDesc.cAccumAlphaBits = 0;
	pixelDesc.cDepthBits = 32;
	pixelDesc.cStencilBits = 8;
	pixelDesc.cAuxBuffers = 0;
	pixelDesc.iLayerType = PFD_MAIN_PLANE;
	pixelDesc.bReserved = 0;
	pixelDesc.dwLayerMask = 0;
	pixelDesc.dwVisibleMask = 0;
	pixelDesc.dwDamageMask = 0;
	
	m_GLPixelIndex = ChoosePixelFormat(hDC,&pixelDesc);
	if(m_GLPixelIndex == 0) // Choose default
	{
		m_GLPixelIndex = 1;
		if(DescribePixelFormat(hDC,m_GLPixelIndex,
			sizeof(PIXELFORMATDESCRIPTOR),&pixelDesc)==0)
			return FALSE;
	}
	
	if(!SetPixelFormat(hDC,m_GLPixelIndex,&pixelDesc))
		return FALSE;
	
	return TRUE;
}

// 創(chuàng)建一個(gè)OpenGL繪制描述表
BOOL CRenderView::CreateViewGLContext(HDC hDC)
{
	m_hGLContext = wglCreateContext(hDC);
	
	if(m_hGLContext==NULL)
		return FALSE;
	
	if(wglMakeCurrent(hDC,m_hGLContext)==FALSE)
		return FALSE;
	
	return TRUE;
}

// 清除所有OpenGL繪制描述表
// 銷毀函數(shù)
void CRenderView::OnDestroy() 
{
	if(wglGetCurrentContext() != NULL)
		wglMakeCurrent(NULL,NULL);
	
	if(m_hGLContext != NULL)
	{
		wglDeleteContext(m_hGLContext);
		m_hGLContext = NULL;
	}
	
	CView::OnDestroy();
}

//  窗口大小變化響應(yīng)函數(shù)
void CRenderView::OnSize(UINT nType, int cx, int cy) 
{
	CView::OnSize(nType, cx, cy);
	
	// 設(shè)置OpenGL投影、視口和矩陣模式
	CSize size(cx,cy);

	glViewport(0,0,size.cx,size.cy);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(45.0, 1.0f, 1.0f, 128.0);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	glDrawBuffer(GL_BACK);
	glEnable(GL_DEPTH_TEST);	
}

void CRenderView::OnLButtonDown(UINT nFlags, 
								CPoint point) 
{
	m_LeftButtonDown = TRUE;
	m_LeftDownPos = point;
	CView::OnLButtonDown(nFlags, point);
}

void CRenderView::OnLButtonUp(UINT nFlags, 
								CPoint point) 
{
	m_LeftButtonDown = FALSE;
	CView::OnLButtonUp(nFlags, point);
}

void CRenderView::OnMouseMove(UINT nFlags, 
							CPoint point) 
{
	if(m_LeftButtonDown)
	{
		m_xRotation += (float)(point.y - m_LeftDownPos.y) / 3.0f;
		m_yRotation += (float)(point.x - m_LeftDownPos.x) / 3.0f;
		m_LeftDownPos = point;
		InvalidateRect(NULL,FALSE);
	}
	CView::OnMouseMove(nFlags, point);
}

// 繪制函數(shù)
void CRenderView::OnPaint() 
{
	// 用于繪制的設(shè)備描述表
	CPaintDC dc(this); 
	
	// Useful in singledoc templates
	HWND hWnd = GetSafeHwnd();
	HDC hDC = ::GetDC(hWnd);
	wglMakeCurrent(hDC,m_hGLContext);
	DrawWithOpenGL();
	// 使用雙緩存
	SwapBuffers(hDC); //dc.m_ps.hdc
}

// 用定時(shí)器實(shí)現(xiàn)一段簡單的動(dòng)畫,每幀繞X軸、Y軸分別旋轉(zhuǎn)1.0度
void CRenderView::OnTimer(UINT nIDEvent) 
{
	switch(nIDEvent)
		{
		case 0:
			break;
		case 1:
			m_xRotation+=1.0f;
			m_yRotation+=1.0f;
			InvalidateRect(NULL,FALSE);
			break;
		default:
			{}
		}
}

void CRenderView::DrawWithOpenGL()
{
	// 清除背景
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glClearColor(m_ClearColorRed,m_ClearColorGreen,m_ClearColorBlue,1.0f);

	glPushMatrix();
	
	// 縮放、平移、旋轉(zhuǎn)變換
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	glScalef(m_xScaling,m_yScaling,m_zScaling);
	glTranslatef(m_xTranslation,m_yTranslation,m_zTranslation);
 	glRotatef(m_xRotation,1.0f,0.0f,0.0f);
	glRotatef(m_yRotation,0.0f,1.0f,0.0f);
    auxSolidSphere(1.0);
	glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(45.0, 1.0f, 1.0f, 128.0);
	
	glPopMatrix();	
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久日产精品| 91网站最新网址| 丰满岳乱妇一区二区三区| 91在线免费视频观看| 日韩和的一区二区| 久久一区二区视频| 国产一区二三区| 国产香蕉久久精品综合网| 欧美日韩国产精选| 日韩一区二区三区电影 | 国产婷婷色一区二区三区 | 99精品久久免费看蜜臀剧情介绍| 欧美一区日本一区韩国一区| 精品国产成人系列| 亚洲蜜臀av乱码久久精品蜜桃| 日本在线观看不卡视频| va亚洲va日韩不卡在线观看| 欧美剧在线免费观看网站 | 成人h精品动漫一区二区三区| 在线观看av一区| 精品国产1区二区| 亚洲在线成人精品| 国产麻豆精品95视频| 欧美在线观看一区二区| 中文av一区二区| 樱桃视频在线观看一区| 国产一区二区三区四区在线观看| 在线观看不卡视频| 国产精品久久久久永久免费观看| 日韩二区三区在线观看| 91免费在线视频观看| 2020国产精品| 日韩高清在线电影| 在线日韩av片| 国产精品久久网站| 黑人巨大精品欧美一区| 欧美日韩黄色影视| 17c精品麻豆一区二区免费| 国产最新精品免费| 777色狠狠一区二区三区| 亚洲欧美乱综合| 成人午夜视频免费看| 日韩欧美国产一二三区| 亚洲成a人v欧美综合天堂下载 | 国产精品久久久久久久久久免费看| 日韩国产高清在线| 在线观看中文字幕不卡| 国产精品久久毛片av大全日韩| 国产一区二区看久久| 日韩精品中文字幕在线不卡尤物| 亚洲国产欧美日韩另类综合 | 亚洲福中文字幕伊人影院| 不卡电影一区二区三区| 久久精品一区二区三区av| 捆绑调教一区二区三区| 欧美福利电影网| 午夜精彩视频在线观看不卡| 欧日韩精品视频| 亚洲乱码国产乱码精品精98午夜| 成人av资源网站| 国产精品国产三级国产普通话99| 国产精品自在欧美一区| 一个色妞综合视频在线观看| 成人性视频免费网站| 2019国产精品| 国产乱人伦偷精品视频免下载 | 国产精品一区二区黑丝| 欧美精品一区二区高清在线观看| 青青草伊人久久| 日韩欧美黄色影院| 久久不见久久见免费视频1 | 国产成人精品亚洲777人妖| 久久亚洲精华国产精华液 | 欧美国产综合色视频| 国产精品18久久久久久久久久久久 | 久久精品视频一区| 精品国产乱码久久久久久夜甘婷婷 | 久久精品理论片| 欧美一区二区精品| 老司机精品视频一区二区三区| 日韩欧美黄色影院| 国产真实乱子伦精品视频| 精品噜噜噜噜久久久久久久久试看| 久久不见久久见免费视频7 | 国产乱子伦视频一区二区三区| 久久久综合激的五月天| 国产91精品精华液一区二区三区 | 成人不卡免费av| 亚洲欧美色图小说| 欧美日韩在线播放三区四区| 三级不卡在线观看| 欧美成人性福生活免费看| 国产美女主播视频一区| 国产精品入口麻豆原神| 91视频免费播放| 亚洲成人黄色小说| 日韩精品一区二区三区中文不卡| 美女高潮久久久| 久久久久亚洲蜜桃| 99久久精品国产精品久久| 亚洲精品视频在线观看网站| 欧美日韩国产区一| 亚洲成人7777| 精品国产免费一区二区三区四区 | 中文字幕电影一区| 在线视频亚洲一区| 捆绑变态av一区二区三区| 亚洲精品在线三区| 成人精品视频一区二区三区尤物| 亚洲午夜免费电影| 久久综合一区二区| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 午夜精品福利视频网站| 久久亚洲私人国产精品va媚药| 91在线视频播放地址| 蜜桃免费网站一区二区三区| 国产三级欧美三级| 欧美日韩一区不卡| 国产精品123| 午夜免费久久看| 中文字幕免费在线观看视频一区| 欧美在线三级电影| 亚洲超碰97人人做人人爱| 久久综合色之久久综合| 日本电影亚洲天堂一区| 经典一区二区三区| 亚洲一级二级在线| 久久久亚洲欧洲日产国码αv| 91成人在线免费观看| 国产剧情一区在线| 亚洲成人午夜影院| 国产欧美日韩久久| 欧美高清视频不卡网| 成人免费视频app| 蜜桃视频第一区免费观看| 亚洲精品国产精品乱码不99| 精品国产免费人成在线观看| 欧美亚洲图片小说| 粉嫩aⅴ一区二区三区四区五区| 午夜精品久久久久久久蜜桃app| 日本一区二区三级电影在线观看| 欧美高清激情brazzers| 色综合天天天天做夜夜夜夜做| 国产主播一区二区| 天堂资源在线中文精品| 亚洲三级免费观看| 中文在线一区二区| 精品国产乱子伦一区| 欧美精品久久久久久久久老牛影院| 91亚洲大成网污www| 国产宾馆实践打屁股91| 韩国欧美国产一区| 美女视频一区二区| 午夜伦理一区二区| 亚洲一二三级电影| 亚洲免费av网站| 国产精品理伦片| 国产午夜精品理论片a级大结局| 666欧美在线视频| 欧美女孩性生活视频| 色综合久久88色综合天天6 | 亚洲精品美国一| 国产精品超碰97尤物18| 成人动漫一区二区三区| 免费久久99精品国产| 亚洲v日本v欧美v久久精品| 一区二区三区不卡视频在线观看| 国产精品免费av| 国产精品无码永久免费888| 久久精品夜色噜噜亚洲a∨| 日韩欧美国产一区在线观看| 欧美一区二区精品久久911| 在线不卡免费欧美| 欧美日韩国产一级片| 欧美精品在线观看一区二区| 欧美日韩精品一区二区三区四区| 欧美系列在线观看| 欧美久久久久免费| 欧美一区二区私人影院日本| 欧美电影一区二区| 91精品国产手机| 日韩欧美123| 欧美一级日韩不卡播放免费| 日韩欧美三级在线| 精品国产乱码久久久久久图片| 精品久久久久99| 久久亚洲二区三区| 日本一二三不卡| 亚洲人亚洲人成电影网站色| 一区二区三区在线观看国产| 亚洲激情在线激情| 亚洲va韩国va欧美va精品| 青娱乐精品在线视频| 激情偷乱视频一区二区三区| 狠狠色丁香婷综合久久| 国产高清在线观看免费不卡| 99在线精品观看| 欧美日韩五月天| 日韩欧美在线影院| 国产午夜精品理论片a级大结局|