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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 真實感圖形學view.cpp

?? 計算機圖形學原理及算法教程(VC++版)程序代碼
?? CPP
字號:
// 真實感圖形學View.cpp : implementation of the CMyView class
//

#include "stdafx.h"
#include "真實感圖形學.h"

#include "真實感圖形學Doc.h"
#include "真實感圖形學View.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include "ZBuffer.h"
#include "BRender.h"
#include "TypedStack.h"
#include "Lighting.h"
/////////////////////////////////////////////////////////////////////////////
// CMyView

IMPLEMENT_DYNCREATE(CMyView, CView)

BEGIN_MESSAGE_MAP(CMyView, CView)
	//{{AFX_MSG_MAP(CMyView)
	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()

/////////////////////////////////////////////////////////////////////////////
// CMyView construction/destruction

CMyView::CMyView()
{
//視點
	VERTEX3D viewer = {0.0f,  0.0f,  8.0f};

	//視口變換中進行放大處理, 屏幕位置距離視點100個單位;
	//透視中心(屏幕坐標)為(250, 250)
	VIEWFINDER viewFinder = {100.0f,  8.0f,  8.0f,  {200,  200}};

	m_viewer = viewer;
	m_viewFinder = viewFinder;
}


	


CMyView::~CMyView()
{
delete m_pSphere0;
	delete m_pSphere1;
	delete m_pSphere2;
//	delete m_pSphere3;
//	delete m_pSphere4;
//	delete m_pSphere5;
	delete[] m_pLights;
	delete m_pCB;
}

BOOL CMyView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CMyView drawing

void CMyView::OnDraw(CDC* pDC)
{
	m_pCB->SwapBuffer(pDC);
}

/////////////////////////////////////////////////////////////////////////////
// CMyView printing

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CMyView diagnostics

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CMyView message handlers

int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	//
	//the first stage

	//第一階段, 建立場景,設置光源和材質屬性,完成光照計算
	
	//第一步, 申明一個球對象
	m_pSphere0 = new CSphere(0.5f, 32, 32);

	//克隆五個球
	m_pSphere1 = m_pSphere0->Clone();
	m_pSphere2 = m_pSphere0->Clone();
//	m_pSphere3 = m_pSphere0->Clone();
//	m_pSphere4 = m_pSphere0->Clone();
//	m_pSphere5 = m_pSphere0->Clone();

	//組織場景, 進行幾何變換

	//構造一個矩陣堆棧
	CTypedStack<CMatrix3d> matrixStack;
	//變換矩陣
	CMatrix3d mGeometry;

	//方位矩陣
	mGeometry.RotateX(45.0f);
	matrixStack.Push(mGeometry);

	//上一層球
	mGeometry.Translate(-1.1f,  1.0f,  0.0f);
	m_pSphere0->Transform(mGeometry);
	
	mGeometry.Translate(1.1f,  0.0f,  0.0f);
	m_pSphere1->Transform(mGeometry);

	mGeometry.Translate(1.1f,  0.0f,  0.0f);
	m_pSphere2->Transform(mGeometry);

/*	//下一層球
	mGeometry.Translate(0.0f,  -1.4f,  0.0f);
	m_pSphere5->Transform(mGeometry);

	mGeometry.Translate(-1.1f,  0.0f,  0.0f);
	m_pSphere4->Transform(mGeometry);

	mGeometry.Translate(-1.1f,  0.0f,  0.0f);
	m_pSphere3->Transform(mGeometry);*/

	//法線:
	CMatrix3d mn = matrixStack.Pop();

	
	//物體的頂點法線:
	m_pSphere0->TransVertexNormals(mn);
	m_pSphere1->TransVertexNormals(mn);
	m_pSphere2->TransVertexNormals(mn);
//	m_pSphere3->TransVertexNormals(mn);
//	m_pSphere4->TransVertexNormals(mn);
//	m_pSphere5->TransVertexNormals(mn);
	

	//第二步:設置材質和光源

	//設置兩個光源
	m_pLights = new CLightObj[2];

	//設置第一盞燈(泛光燈)
	float amb_omni[4] = {0.2f,  0.2f,  0.2f,  1.0f};
	float dif_omni[4] = {1.0f,  1.0f,  1.0f,  1.0f};
	float spe_omni[4] = {1.0f,  1.0f,  1.0f,  1.0f};
	float pos_omni[4] = {0.0f,  0.0f,  8.0f,  1.0f};

	m_pLights[0].Lightfv(G3D_AMBIENT,   amb_omni);
	m_pLights[0].Lightfv(G3D_DIFFUSE,   dif_omni);
	m_pLights[0].Lightfv(G3D_SPECULAR,  spe_omni);
	m_pLights[0].Lightfv(G3D_POSITION,  pos_omni);
	//m_pLights[0].Lightf(G3D_CONSTANT_ATTENUATION,  2.5f);
	//m_pLights[0].Lightb(G3D_LIGHT_ON_OFF,  FALSE);

	//設置第一盞燈(聚光燈)
	float amb_spot[4] = {0.2f, 0.2f, 0.2f, 1.0f};
	float dif_spot[4] = {1.0f, 0.0f, 0.0f, 1.0f};
	float spe_spot[4] = {1.0f, 1.0f, 1.0f, 1.0f};
	float pos_spot[4] = {0.0f, 8.0f, 8.0f, 1.0f};
	float dir_spot[4] = {0.0f, -1.0f, -1.0f, 1.0f};

	m_pLights[1].Lightfv(G3D_AMBIENT,  amb_spot);
	m_pLights[1].Lightfv(G3D_DIFFUSE,  dif_spot);
	m_pLights[1].Lightfv(G3D_SPECULAR,  spe_spot);
	m_pLights[1].Lightfv(G3D_POSITION,  pos_spot);
	m_pLights[1].Lightfv(G3D_SPOT_DIRECTION,  dir_spot);

	m_pLights[1].Lightf(G3D_SPOT_CUTOFF,  5.3f);
	m_pLights[1].Lightf(G3D_SPOT_EXPONENT, 50.0f);
	//m_pLights[1].Lightf(G3D_CONSTANT_ATTENUATION,  2.5f);
	//m_pLights[1].Lightb(G3D_LIGHT_ON_OFF,  FALSE);



	//第三步, 定義材質
	//黃色材質
	float ambMaterial[4] = {0.2f,  0.2f,  0.2f,  1.0f};
	float difMaterial[4] = {0.8f,  0.8f,  0.0f,  1.0f};
	float speMaterial[4] = {1.0f,  1.0f,  1.0f,  1.0f};

	float shininess = 50.0f;	


	//金
	//float ambMaterial[4] = {0.247f,  0.200f,  0.075f,  1.0f};
	//float difMaterial[4] = {0.752f,  0.606f,  0.226f,  1.0f};
	//float speMaterial[4] = {0.628f,  0.556f,  0.336f,  1.0f};
	//float shininess = 51.2f;	
	

	//設置材質
	m_material.Materialfv(G3D_FRONT,  G3D_AMBIENT,  ambMaterial);
	m_material.Materialfv(G3D_FRONT,  G3D_DIFFUSE,  difMaterial);
	m_material.Materialfv(G3D_FRONT,  G3D_SPECULAR,  speMaterial);
	m_material.Materialf(G3D_FRONT,   G3D_SHININESS,  shininess);

	
	//第四步, 進行光照計算
	CLighting lighting;
	
	//允許局部光照模型
	lighting.LightModelb(G3D_LIGHT_MODEL_LOCAL_VIEWER,  TRUE);

	//光照計算
	lighting.Lighting(m_pSphere0,  m_material,  m_viewer,  m_pLights,  2);
	lighting.Lighting(m_pSphere1,  m_material,  m_viewer,  m_pLights,  2);
	lighting.Lighting(m_pSphere2,  m_material,  m_viewer,  m_pLights,  2);
	
//	lighting.Lighting(m_pSphere3,  m_material,  m_viewer,  m_pLights,  2);
//	lighting.Lighting(m_pSphere4,  m_material,  m_viewer,  m_pLights,  2);
//	lighting.Lighting(m_pSphere5,  m_material,  m_viewer,  m_pLights,  2);

	//第一階段已經完畢


	//////////////////////////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////////////
	//

	//       The second stage      

	//第二階段, 開始繪制到內存


	//第一步, 初始化顏色緩沖區, 申請深度緩沖區
	m_pCB = new CColorBuffer(410, 350);
	
	//深度緩沖區, 與顏色緩沖區大小保持一致
	CZBuffer* pZB = new CZBuffer(410,  350);
	pZB->InitAllDepth(500.0f);

	//第二步,  著色
	CBRender renderer;

	//線框模型
	renderer.Render(m_pSphere0,  m_viewer,  m_viewFinder,   m_pCB,  pZB,  G3D_RENDER_WIRE);

	//刻面模型
	renderer.Render(m_pSphere1,  m_viewer,  m_viewFinder,   m_pCB,  pZB,  G3D_RENDER_FLAT);

	//光滑明暗模型
	renderer.Render(m_pSphere2,  m_viewer,  m_viewFinder,   m_pCB,  pZB,  G3D_RENDER_GOURAUD_SMOOTH);

/*	//線框模型
	renderer.Render(m_pSphere3,  m_viewer,  m_viewFinder,   m_pCB,  pZB,  G3D_RENDER_WIRE);

	//刻面模型
	renderer.Render(m_pSphere4,  m_viewer,  m_viewFinder,   m_pCB,  pZB,  G3D_RENDER_FLAT);

	//光滑明暗模型
	renderer.Render(m_pSphere5,  m_viewer,  m_viewFinder,   m_pCB,  pZB,  G3D_RENDER_GOURAUD_SMOOTH);*/
	
	delete pZB;
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美久久久精品影院| 91在线视频在线| 综合分类小说区另类春色亚洲小说欧美 | 久久精品久久综合| 亚洲视频一区在线| 精品国产免费久久| 在线不卡a资源高清| 9i看片成人免费高清| 国产自产v一区二区三区c| 亚洲va中文字幕| 亚洲视频网在线直播| 26uuu亚洲婷婷狠狠天堂| 欧美视频一区在线观看| 99精品久久99久久久久| 国产美女精品一区二区三区| 琪琪久久久久日韩精品| 亚洲午夜久久久久久久久电影网| 国产日韩欧美不卡| 精品国产91洋老外米糕| 欧美一区三区四区| 欧美二区三区91| 制服丝袜中文字幕一区| 欧美日韩在线直播| 精品视频在线免费观看| 色又黄又爽网站www久久| 成人sese在线| 99久久国产综合精品色伊| 国产在线精品一区二区不卡了| 日本欧美久久久久免费播放网| 亚洲午夜激情网页| 亚洲制服丝袜在线| 亚洲制服丝袜一区| 亚洲综合色噜噜狠狠| 亚洲精品久久久久久国产精华液| 亚洲婷婷在线视频| 亚洲欧美另类久久久精品2019| 成人免费在线观看入口| 国产精品女人毛片| 日韩毛片精品高清免费| 亚洲视频一区在线| 夜夜嗨av一区二区三区网页 | 亚洲一卡二卡三卡四卡无卡久久 | 91麻豆精品国产91久久久使用方法 | 美女视频黄久久| 久久精工是国产品牌吗| 久久精品国产77777蜜臀| 美腿丝袜亚洲色图| 国产精品1024| www.亚洲在线| 欧美偷拍一区二区| 日韩写真欧美这视频| 久久一日本道色综合| 中文字幕在线不卡国产视频| 亚洲视频一区在线| 五月天激情小说综合| 精品在线一区二区三区| 国产99精品在线观看| 色欧美日韩亚洲| 欧美理论片在线| 欧美精品一区二区三区蜜桃视频 | 91精品国产色综合久久不卡电影| 欧美一区二区在线视频| 久久综合九色综合久久久精品综合| 精品国产91久久久久久久妲己 | 国产亚洲欧美日韩在线一区| 中文字幕视频一区| 亚洲国产日韩a在线播放性色| 日韩高清不卡在线| 国产成人精品一区二区三区四区 | 捆绑调教一区二区三区| 粉嫩久久99精品久久久久久夜| 99国产精品视频免费观看| 在线免费亚洲电影| 日韩精品专区在线| 亚洲欧美日韩中文播放 | 日韩国产高清在线| 成人一区二区三区中文字幕| 欧美性猛交一区二区三区精品| 精品国产污网站| 亚洲天堂久久久久久久| 免费av网站大全久久| 不卡av在线免费观看| 日韩一区二区三区四区 | 久久99国产精品免费网站| 不卡视频一二三| 日韩久久久久久| 一区二区三区欧美| 国内精品视频一区二区三区八戒 | 久久日一线二线三线suv| 亚洲欧洲日产国码二区| 日本不卡在线视频| 色综合天天综合色综合av| 精品国产亚洲在线| 午夜电影网亚洲视频| 成人黄页在线观看| 精品91自产拍在线观看一区| 亚洲综合清纯丝袜自拍| 国产成人亚洲综合a∨婷婷图片| 欧美日韩高清不卡| 亚洲色欲色欲www| 国产精品88av| 3d动漫精品啪啪1区2区免费| 亚洲天堂福利av| 国产999精品久久久久久| 日韩午夜电影av| 亚洲最大的成人av| av中文字幕一区| 国产亚洲女人久久久久毛片| 日本欧美在线观看| 欧美日韩高清一区二区| 亚洲精品国产一区二区精华液| 国产乱码字幕精品高清av| 制服丝袜亚洲色图| 亚洲永久精品大片| 色噜噜偷拍精品综合在线| 国产蜜臀97一区二区三区| 久久精品国产99| 欧美一区二区三区视频在线观看 | 3d动漫精品啪啪1区2区免费| 亚洲激情校园春色| 色久优优欧美色久优优| 亚洲免费大片在线观看| 成人91在线观看| 一区精品在线播放| caoporn国产精品| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲视频在线一区二区| www.久久精品| 亚洲国产电影在线观看| 不卡的av中国片| 亚洲天堂福利av| 在线一区二区三区做爰视频网站| 亚洲人成网站影音先锋播放| 一本色道亚洲精品aⅴ| 自拍偷拍欧美激情| 色综合夜色一区| 亚洲愉拍自拍另类高清精品| 欧美亚洲自拍偷拍| 亚洲国产另类av| 3d动漫精品啪啪一区二区竹菊| 日本不卡中文字幕| 精品蜜桃在线看| 国产精品综合一区二区三区| 欧美激情一区二区三区| 大胆亚洲人体视频| 亚洲欧美日韩在线播放| 欧美日韩在线精品一区二区三区激情 | 亚洲一区二区av电影| 欧美另类videos死尸| 麻豆成人av在线| 国产亚洲一本大道中文在线| 成人国产亚洲欧美成人综合网| 亚洲欧洲国产日本综合| 在线观看一区日韩| 奇米色一区二区| 国产色婷婷亚洲99精品小说| 成人app网站| 亚欧色一区w666天堂| 欧美电影免费观看高清完整版在| 狠狠色伊人亚洲综合成人| 中文一区二区完整视频在线观看| 一本大道综合伊人精品热热| 五月婷婷色综合| 国产日产欧美一区| 在线亚洲人成电影网站色www| 青青草91视频| 国产精品久久夜| 69av一区二区三区| 国产1区2区3区精品美女| 亚洲一区中文日韩| 欧美精品一区二区不卡| 不卡视频免费播放| 美国精品在线观看| 一区在线观看免费| 欧美tickle裸体挠脚心vk| 97精品国产露脸对白| 强制捆绑调教一区二区| 国产精品成人一区二区艾草| 69堂成人精品免费视频| 波多野结衣精品在线| 婷婷国产v国产偷v亚洲高清| 久久久久国产精品麻豆ai换脸 | 成人影视亚洲图片在线| 亚洲va中文字幕| 国产精品传媒在线| 欧美大黄免费观看| 在线观看av不卡| 国产成人三级在线观看| 天堂一区二区在线免费观看| 国产精品三级电影| 3d动漫精品啪啪| 91黄色免费看| 国产成人精品aa毛片| 日本中文字幕一区二区有限公司| 国产精品素人视频| 精品国产伦一区二区三区观看体验| 91网站视频在线观看| 国产成人在线视频播放| 久久精品国产亚洲高清剧情介绍 | 中文字幕欧美区|