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

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

?? tooneffect.cpp

?? Introduction to directx9 3d game programming 一書的源代碼
?? CPP
字號:
//////////////////////////////////////////////////////////////////////////////////////////////////
// 
// File: tooneffects.cpp
// 
// Author: Frank Luna (C) All Rights Reserved
//
// System: AMD Athlon 1800+ XP, 512 DDR, Geforce 3, Windows XP, MSVC++ 7.0 
//
// Desc: Deomstrates toon rendering using a vertex shader in an effect file.  
//       You will need to switch to the REF device to run this sample if your
//       card does not support shaders.  Or you
//       can use software vertex processing: D3DCREATE_SOFTWARE_VERTEXPROCESSING.
//          
//////////////////////////////////////////////////////////////////////////////////////////////////

#include "d3dUtility.h"

//
// Globals
//

IDirect3DDevice9* Device = 0; 

const int Width  = 640;
const int Height = 480;

ID3DXEffect* ToonEffect    = 0;

ID3DXMesh*  Meshes[4] = {0, 0, 0, 0};
D3DXMATRIX  WorldMatrices[4];
D3DXVECTOR4 MeshColors[4];

D3DXMATRIX ProjMatrix;

IDirect3DTexture9* ShadeTex  = 0;

D3DXHANDLE WorldViewHandle     = 0;
D3DXHANDLE WorldViewProjHandle = 0;
D3DXHANDLE ColorHandle         = 0;
D3DXHANDLE LightDirHandle      = 0;
D3DXHANDLE ShadeTexHandle      = 0;
D3DXHANDLE ToonTechHandle      = 0;

//
// Framework functions
//
bool Setup()
{
	HRESULT hr = 0;

	//
	// Create geometry and compute corresponding world matrix and color
	// for each mesh.
	//

	D3DXCreateTeapot(Device, &Meshes[0], 0);
	D3DXCreateSphere(Device, 1.0f, 20, 20, &Meshes[1], 0);
	D3DXCreateTorus(Device, 0.5f, 1.0f, 20, 20, &Meshes[2], 0);
	D3DXCreateCylinder(Device, 0.5f, 0.5f, 2.0f, 20, 20, &Meshes[3], 0);

	D3DXMatrixTranslation(&WorldMatrices[0],  0.0f,  2.0f, 0.0f);
	D3DXMatrixTranslation(&WorldMatrices[1],  0.0f, -2.0f, 0.0f);
	D3DXMatrixTranslation(&WorldMatrices[2], -3.0f,  0.0f, 0.0f);
	D3DXMatrixTranslation(&WorldMatrices[3],  3.0f,  0.0f, 0.0f);

	MeshColors[0] = D3DXVECTOR4(1.0f, 0.0f, 0.0f, 1.0f);
	MeshColors[1] = D3DXVECTOR4(0.0f, 1.0f, 0.0f, 1.0f);
	MeshColors[2] = D3DXVECTOR4(0.0f, 0.0f, 1.0f, 1.0f);
	MeshColors[3] = D3DXVECTOR4(1.0f, 1.0f, 0.0f, 1.0f);

	//
	// Create effects.
	//

	ID3DXBuffer* errorBuffer = 0;
	hr = D3DXCreateEffectFromFile(
		Device,           // associated device
		"tooneffect.txt", // effect filename
		0,                // no preprocessor definitions
		0,                // no ID3DXInclude interface
		D3DXSHADER_DEBUG, // compile flags
		0,                // don't share parameters
		&ToonEffect,      // return effect
		&errorBuffer);    // return error messages

	// output any error messages
	if( errorBuffer )
	{
		::MessageBox(0, (char*)errorBuffer->GetBufferPointer(), 0, 0);
		d3d::Release<ID3DXBuffer*>(errorBuffer);
	}

	if(FAILED(hr))
	{
		::MessageBox(0, "D3DXCreateEffectFromFile() - FAILED", 0, 0);
		return false;
	}

	// 
	// Save Frequently Accessed Parameter Handles
	//

	ToonTechHandle = ToonEffect->GetTechniqueByName("Toon");
	ShadeTexHandle = ToonEffect->GetParameterByName(0, "ShadeTex");
	WorldViewHandle = ToonEffect->GetParameterByName(0, "WorldViewMatrix");
	WorldViewProjHandle = ToonEffect->GetParameterByName(0, "WorldViewProjMatrix");
	ColorHandle    = ToonEffect->GetParameterByName(0, "Color");
	LightDirHandle = ToonEffect->GetParameterByName(0, "LightDirection");
	
	//
	// Set Effect Parameters
	//

	// Projection:
	D3DXMatrixPerspectiveFovLH(
		&ProjMatrix, D3DX_PI * 0.25f, // 45 - degree
		(float)Width / (float)Height,
		1.0f, 1000.0f);

	// Light direction:
	D3DXVECTOR4 lightDirection(-0.57f, 0.57f, -0.57f, 0.0f);
	ToonEffect->SetVector(LightDirHandle, &lightDirection);

	//
	// Set texture:
	IDirect3DTexture9* tex = 0;
	D3DXCreateTextureFromFile(Device, "toonshade.bmp", &tex);
	ToonEffect->SetTexture(ShadeTexHandle, tex);
	d3d::Release<IDirect3DTexture9*>(tex);

	return true;
}

void Cleanup()
{
	for(int i = 0; i < 4; i++)
	{
		d3d::Release<ID3DXMesh*>(Meshes[i]);
	}
	d3d::Release<IDirect3DTexture9*>(ShadeTex);

	d3d::Release<ID3DXEffect*>(ToonEffect);
}

bool Display(float timeDelta)
{
	if( Device )
	{
		// 
		// Update the scene: Allow user to rotate around scene.
		//
		
		static float angle  = (3.0f * D3DX_PI) / 2.0f;
		static float height = 5.0f;
	
		if( ::GetAsyncKeyState(VK_LEFT) & 0x8000f )
			angle -= 0.5f * timeDelta;

		if( ::GetAsyncKeyState(VK_RIGHT) & 0x8000f )
			angle += 0.5f * timeDelta;

		if( ::GetAsyncKeyState(VK_UP) & 0x8000f )
			height += 5.0f * timeDelta;

		if( ::GetAsyncKeyState(VK_DOWN) & 0x8000f )
			height -= 5.0f * timeDelta;

		D3DXVECTOR3 position( cosf(angle) * 10.0f, height, sinf(angle) * 10.0f );
		D3DXVECTOR3 target(0.0f, 0.0f, 0.0f);
		D3DXVECTOR3 up(0.0f, 1.0f, 0.0f);
		D3DXMATRIX view;
		D3DXMatrixLookAtLH(&view, &position, &target, &up);

		//
		// Activate the Technique and Render
		//

		Device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xffffffff, 1.0f, 0);
		Device->BeginScene();

		ToonEffect->SetTechnique( ToonTechHandle );

		UINT numPasses = 0;
    	ToonEffect->Begin(&numPasses, 0);

		D3DXMATRIX WorldView;
		D3DXMATRIX WorldViewProj;
		for(int i = 0; i < numPasses; i++)
		{
			ToonEffect->Pass(i);

			for(int j = 0; j < 4; j++)
			{
				WorldView     = WorldMatrices[j] * view;
				WorldViewProj = WorldMatrices[j] * view * ProjMatrix;

				ToonEffect->SetMatrix(WorldViewHandle, &WorldView);
				ToonEffect->SetMatrix(WorldViewProjHandle, &WorldViewProj);
				ToonEffect->SetVector(ColorHandle, &MeshColors[j]);
				Meshes[j]->DrawSubset(0);
			}
		}
		ToonEffect->End();

		Device->EndScene();
		Device->Present(0, 0, 0, 0);
	}
	return true;
}

//
// WndProc
//
LRESULT CALLBACK d3d::WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch( msg )
	{
	case WM_DESTROY:
		::PostQuitMessage(0);
		break;
		
	case WM_KEYDOWN:
		if( wParam == VK_ESCAPE )
			::DestroyWindow(hwnd);

		break;
	}
	return ::DefWindowProc(hwnd, msg, wParam, lParam);
}

//
// WinMain
//
int WINAPI WinMain(HINSTANCE hinstance,
				   HINSTANCE prevInstance, 
				   PSTR cmdLine,
				   int showCmd)
{
	if(!d3d::InitD3D(hinstance,
		Width, Height, true, D3DDEVTYPE_HAL, &Device))
	{
		::MessageBox(0, "InitD3D() - FAILED", 0, 0);
		return 0;
	}
		
	if(!Setup())
	{
		::MessageBox(0, "Setup() - FAILED", 0, 0);
		return 0;
	}

	d3d::EnterMsgLoop( Display );

	Cleanup();

	Device->Release();

	return 0;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区蝌蚪| 99在线视频精品| 成人毛片视频在线观看| 欧美日韩日日夜夜| 久久久久久**毛片大全| 亚洲成人一二三| 成人午夜电影网站| 日韩精品一区二区三区在线| 亚洲精品一二三| 国产精品自拍三区| 91精品国产手机| 一区二区三区国产精品| 成人免费视频播放| 欧美精品一区视频| 五月天一区二区| 日本韩国精品一区二区在线观看| 国产日韩欧美在线一区| 麻豆国产欧美日韩综合精品二区| 欧美主播一区二区三区美女| 国产精品麻豆久久久| 国产一区二区中文字幕| 日韩欧美中文一区二区| 亚洲mv大片欧洲mv大片精品| 色婷婷综合久久| 亚洲精品久久久久久国产精华液| 丰满少妇久久久久久久| 欧美精品一区二区三区很污很色的| 亚洲精品亚洲人成人网 | 国产亚洲成aⅴ人片在线观看| 亚洲成人自拍一区| 欧美三级中文字幕在线观看| 一区二区三区自拍| 91丨porny丨中文| 久久99蜜桃精品| 日韩欧美国产系列| 免费高清成人在线| 日韩久久精品一区| 久久99精品久久只有精品| 欧美一级xxx| 久久疯狂做爰流白浆xx| 欧美一区二区观看视频| 另类小说视频一区二区| 久久精品一二三| 国产精品一二三四| 国产精品欧美综合在线| 色欧美片视频在线观看 | 亚洲精品视频在线看| 91丝袜高跟美女视频| 亚洲欧洲成人精品av97| 色又黄又爽网站www久久| 亚洲激情一二三区| 欧美精品在线视频| 久久成人18免费观看| 欧美激情在线一区二区| 色婷婷综合久久| 日日欢夜夜爽一区| wwwwxxxxx欧美| 99国产精品久| 日韩精品乱码av一区二区| 亚洲精品一区二区三区精华液| 国产成人激情av| 亚洲一区二区三区美女| 欧美一级高清片| 成人免费精品视频| 亚洲国产精品久久久男人的天堂 | 99久久婷婷国产| 亚洲国产精品久久久久婷婷884| 欧美日韩精品一区视频| 国产精品一区二区在线播放 | 日本韩国欧美在线| 久久 天天综合| 亚洲美女淫视频| 精品99一区二区| 在线免费视频一区二区| 国产一区二三区好的| 亚洲国产精品久久一线不卡| 国产婷婷色一区二区三区| 色欧美片视频在线观看在线视频| 美女一区二区视频| 亚洲一区二区欧美| 国产精品美女久久久久高潮| 日韩一区二区在线观看视频| av亚洲产国偷v产偷v自拍| 另类小说图片综合网| 亚洲精品一二三| 国产精品天美传媒| 日韩一卡二卡三卡四卡| 色菇凉天天综合网| 国产v综合v亚洲欧| 蜜桃在线一区二区三区| 亚洲一区免费视频| 亚洲色图欧美在线| 国产欧美日韩三区| 精品久久99ma| 91精品国产欧美一区二区成人| 99re66热这里只有精品3直播 | 久久久久97国产精华液好用吗| 欧美日韩国产精品成人| 91精品福利在线| 97精品国产露脸对白| 成人免费精品视频| 成人久久久精品乱码一区二区三区 | 天堂一区二区在线免费观看| 中文字幕日韩av资源站| 国产视频一区在线观看| 精品sm在线观看| wwwwww.欧美系列| 欧美成人精品高清在线播放| 欧美巨大另类极品videosbest| 色婷婷综合中文久久一本| 91香蕉视频污在线| 一本到不卡免费一区二区| av一区二区三区在线| 色综合天天性综合| 色哟哟精品一区| 色噜噜狠狠成人网p站| 色网综合在线观看| 欧美日韩国产综合视频在线观看| 在线观看日产精品| 在线观看国产日韩| 欧美久久一二区| 日韩欧美一级特黄在线播放| 欧美成人精品二区三区99精品| 日韩欧美电影一二三| 精品盗摄一区二区三区| 欧美极品少妇xxxxⅹ高跟鞋| 国产精品久久看| 亚洲精品视频观看| 午夜久久久久久久久久一区二区| 亚洲gay无套男同| 麻豆国产欧美日韩综合精品二区| 激情久久久久久久久久久久久久久久 | 国产成人在线看| 国产a精品视频| 91视频观看视频| 色婷婷亚洲婷婷| 91精品蜜臀在线一区尤物| 2021中文字幕一区亚洲| 国产精品视频在线看| 亚洲一区二区三区激情| 天天综合天天做天天综合| 久久99精品国产.久久久久久| 成人国产精品免费观看| 欧美亚洲日本一区| 2021中文字幕一区亚洲| 日韩理论片在线| 美国欧美日韩国产在线播放| 国产成人自拍高清视频在线免费播放| a美女胸又www黄视频久久| 欧美天堂亚洲电影院在线播放| 日韩一区二区在线观看视频播放| 日韩国产欧美在线播放| 国产精品影音先锋| 欧美在线你懂得| 国产亚洲综合在线| 亚洲国产综合视频在线观看| 国产一区欧美日韩| 欧美唯美清纯偷拍| 中文字幕乱码日本亚洲一区二区| 亚洲一区在线电影| 粗大黑人巨茎大战欧美成人| 欧美少妇xxx| 国产精品国产三级国产三级人妇| 午夜伊人狠狠久久| 不卡视频一二三四| 日韩精品自拍偷拍| 亚洲一二三区不卡| 波多野结衣视频一区| 日韩视频免费观看高清完整版在线观看| 国产精品久久午夜夜伦鲁鲁| 久久精品国产99国产| 欧洲人成人精品| 亚洲天堂2014| 黑人精品欧美一区二区蜜桃 | www.成人网.com| 日韩久久久精品| 日韩激情视频在线观看| 91麻豆免费看片| 国产精品乱人伦中文| 经典三级一区二区| 91精品国产乱码久久蜜臀| 一区二区三区国产精品| 99精品国产热久久91蜜凸| 久久久99精品免费观看不卡| 免费在线观看不卡| 欧美日韩一区国产| 一二三区精品福利视频| 99九九99九九九视频精品| 欧美激情中文不卡| 懂色一区二区三区免费观看| 精品黑人一区二区三区久久| 美女视频网站黄色亚洲| 欧美日韩国产综合一区二区三区| 一区二区三区四区高清精品免费观看| 成人18视频在线播放| 国产精品人成在线观看免费| 国产精品自拍网站| 国产精品麻豆一区二区 | 国产精品一区二区男女羞羞无遮挡| 日韩三级电影网址|