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

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

?? vs_diffuse.cpp

?? Introduction to directx9 3d game programming 一書的源代碼
?? CPP
字號:
//////////////////////////////////////////////////////////////////////////////////////////////////
// 
// File: vs_diffuse.cpp
// 
// Author: Frank Luna (C) All Rights Reserved
//
// System: AMD Athlon 1800+ XP, 512 DDR, Geforce 3, Windows XP, MSVC++ 7.0 
//
// Desc: Deomstrates diffuse lighting using a vertex shader.  You will
//       have to switch to the REF device to run this sample if your
//       hardware 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;

IDirect3DVertexShader9* DiffuseShader = 0;
ID3DXConstantTable* DiffuseConstTable = 0;

ID3DXMesh* Teapot            = 0;

D3DXHANDLE ViewMatrixHandle     = 0;
D3DXHANDLE ViewProjMatrixHandle = 0;
D3DXHANDLE AmbientMtrlHandle    = 0;
D3DXHANDLE DiffuseMtrlHandle    = 0;
D3DXHANDLE LightDirHandle       = 0;

D3DXMATRIX Proj;

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

	//
	// Create geometry:
	//

	D3DXCreateTeapot(Device, &Teapot, 0);

	//
	// Compile shader
	//

	ID3DXBuffer* shader      = 0;
	ID3DXBuffer* errorBuffer = 0;

	hr = D3DXCompileShaderFromFile(
		"diffuse.txt",
		0,
		0,
		"Main", // entry point function name
		"vs_1_1",
		D3DXSHADER_DEBUG, 
		&shader,
		&errorBuffer,
		&DiffuseConstTable);

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

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

	//
	// Create shader
	//

	hr = Device->CreateVertexShader(
		(DWORD*)shader->GetBufferPointer(),
		&DiffuseShader);

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

	d3d::Release<ID3DXBuffer*>(shader);


	// 
	// Get Handles
	//

	ViewMatrixHandle    = DiffuseConstTable->GetConstantByName(0, "ViewMatrix");
	ViewProjMatrixHandle= DiffuseConstTable->GetConstantByName(0, "ViewProjMatrix");
	AmbientMtrlHandle   = DiffuseConstTable->GetConstantByName(0, "AmbientMtrl");
	DiffuseMtrlHandle   = DiffuseConstTable->GetConstantByName(0, "DiffuseMtrl");
	LightDirHandle      = DiffuseConstTable->GetConstantByName(0, "LightDirection");

	//
	// Set shader constants:
	//

	// Light direction:
	D3DXVECTOR4 directionToLight(-0.57f, 0.57f, -0.57f, 0.0f);
	DiffuseConstTable->SetVector(Device, LightDirHandle, &directionToLight);

	// Materials:
	D3DXVECTOR4 ambientMtrl(0.0f, 0.0f, 1.0f, 1.0f);
	D3DXVECTOR4 diffuseMtrl(0.0f, 0.0f, 1.0f, 1.0f);

	DiffuseConstTable->SetVector(Device,AmbientMtrlHandle,&ambientMtrl);
	DiffuseConstTable->SetVector(Device,DiffuseMtrlHandle,&diffuseMtrl);
	DiffuseConstTable->SetDefaults(Device);

	// Compute projection matrix.
	D3DXMatrixPerspectiveFovLH(
		&Proj,	D3DX_PI * 0.25f, 
		(float)Width / (float)Height, 1.0f, 1000.0f);

	return true;
}

void Cleanup()
{
	d3d::Release<ID3DXMesh*>(Teapot);
	d3d::Release<IDirect3DVertexShader9*>(DiffuseShader);
	d3d::Release<ID3DXConstantTable*>(DiffuseConstTable);
}

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 = 3.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) * 7.0f, height, sinf(angle) * 7.0f );
		D3DXVECTOR3 target(0.0f, 0.0f, 0.0f);
		D3DXVECTOR3 up(0.0f, 1.0f, 0.0f);
		D3DXMATRIX V;
		D3DXMatrixLookAtLH(&V, &position, &target, &up);

		DiffuseConstTable->SetMatrix(Device, ViewMatrixHandle, &V);

		D3DXMATRIX ViewProj = V * Proj;
		DiffuseConstTable->SetMatrix(Device, ViewProjMatrixHandle, &ViewProj);

		//
		// Render
		//

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

		Device->SetVertexShader(DiffuseShader);

		Teapot->DrawSubset(0);
		
		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精品久久久久久夜| 亚洲国产中文字幕在线视频综合| 国产午夜精品一区二区三区四区| 7777精品伊人久久久大香线蕉超级流畅| 肉丝袜脚交视频一区二区| 亚洲精品视频自拍| 国产精品久久久久三级| 久久久www免费人成精品| 日韩免费高清av| 日韩视频一区二区三区| 欧美二区乱c少妇| 欧美精品久久99| 91色乱码一区二区三区| 成人综合婷婷国产精品久久| 99免费精品在线观看| 色天天综合久久久久综合片| 欧美日韩三级一区| 日韩视频在线你懂得| 国产欧美1区2区3区| 国产精品伦理在线| 一级做a爱片久久| 日韩影院免费视频| 成人午夜激情视频| 欧美色偷偷大香| 日韩精品专区在线| 国产精品久久久久桃色tv| 亚洲永久精品国产| 久久99精品国产.久久久久久| 国产成人亚洲综合a∨猫咪| 91小视频在线免费看| 制服丝袜亚洲网站| 中文字幕欧美日韩一区| 五月天激情综合网| 懂色av一区二区夜夜嗨| 欧美日本免费一区二区三区| 国产欧美日韩综合精品一区二区 | 亚洲欧美一区二区三区国产精品| 一区二区三区免费| 国产乱人伦精品一区二区在线观看| 91福利精品视频| 日本一区二区三区四区在线视频| 亚洲在线一区二区三区| 国产成人精品网址| 在线成人小视频| 中文字幕一区二区在线观看| 奇米精品一区二区三区在线观看| 成+人+亚洲+综合天堂| 日韩欧美国产麻豆| 亚洲一区二区三区小说| 国产精品1区二区.| 国产综合色视频| 欧美国产精品劲爆| 97精品久久久午夜一区二区三区| 中文字幕色av一区二区三区| 在线观看不卡视频| 久久精品国产精品亚洲红杏| 国产日韩欧美一区二区三区乱码| 95精品视频在线| 亚洲123区在线观看| 精品国产一区二区国模嫣然| 99久久伊人久久99| 亚洲成av人片一区二区梦乃| 国产精品成人一区二区三区夜夜夜| 欧美在线不卡视频| 精品一区二区三区视频| 综合久久国产九一剧情麻豆| 欧美日韩亚洲不卡| 久久夜色精品一区| 亚洲综合久久久| 欧美性做爰猛烈叫床潮| 亚洲日本丝袜连裤袜办公室| 成人在线综合网站| 国产女主播在线一区二区| 国产伦精品一区二区三区免费 | 欧美丰满一区二区免费视频| 一区二区三区四区在线| 日本高清无吗v一区| 亚洲色图制服丝袜| 99久久精品国产一区二区三区| 久久久精品人体av艺术| 国产精品538一区二区在线| 久久久精品综合| 国产91露脸合集magnet| 国产精品视频线看| 成人h精品动漫一区二区三区| 中文字幕在线观看不卡| 不卡一区中文字幕| 亚洲一区二区三区中文字幕 | 国产精品白丝在线| 亚洲黄色免费电影| 亚洲国产精品国自产拍av| 91精品国产综合久久久久久| 国产精品美女久久久久久| 老司机精品视频导航| 国产欧美精品一区二区色综合朱莉| 丁香婷婷综合五月| 一区二区三区中文字幕在线观看| 色美美综合视频| 久久爱另类一区二区小说| 国产亚洲综合av| 91香蕉视频黄| 日韩中文字幕不卡| 国产喷白浆一区二区三区| 色综合久久综合| 日韩av不卡一区二区| 久久久久久97三级| 欧美在线观看18| 天天操天天综合网| 国产婷婷色一区二区三区四区| 91香蕉视频mp4| 另类的小说在线视频另类成人小视频在线| 精品福利视频一区二区三区| 成人国产精品免费| 日韩avvvv在线播放| 中文字幕日韩一区| 日韩精品在线网站| 色综合久久久久综合体桃花网| 免费不卡在线观看| 成人欧美一区二区三区白人| 精品少妇一区二区三区在线视频| 日本大香伊一区二区三区| 国产一区啦啦啦在线观看| 亚洲国产一区在线观看| 国产精品久久久久久久久快鸭 | 最好看的中文字幕久久| 欧美一卡在线观看| 一本到不卡免费一区二区| 国产精品白丝av| 日韩激情一二三区| 亚洲激情综合网| 国产欧美日韩精品在线| 91精品福利在线一区二区三区| 色综合久久综合网欧美综合网| 国产美女久久久久| 日本亚洲免费观看| 精品福利av导航| 欧美三级中文字| 精品免费一区二区三区| 中文在线一区二区| 一区二区三区四区国产精品| 亚洲成人综合视频| 国产精品18久久久| 欧美怡红院视频| 欧美videossexotv100| 国产精品麻豆久久久| 亚洲成人av电影在线| 激情综合网av| 色综合久久中文字幕综合网| 日韩一区二区三区在线视频| 成人欧美一区二区三区白人| 视频一区二区国产| 成人精品亚洲人成在线| 欧美日韩国产综合草草| 久久久久久97三级| 亚洲综合无码一区二区| 国产自产高清不卡| 色老综合老女人久久久| 日韩精品一区二区三区在线 | 国产精品久久久久影院色老大| 国产欧美一区二区精品性 | 色综合天天综合狠狠| 成人激情开心网| 99re热这里只有精品视频| 91首页免费视频| 欧美日韩亚州综合| 日韩一区二区三区视频| 久久综合久久久久88| 国产精品久久久久一区| 一区二区欧美国产| 三级成人在线视频| 国产精品一区专区| 91网上在线视频| 7777精品伊人久久久大香线蕉经典版下载 | 久久久另类综合| 亚洲靠逼com| 免费在线视频一区| 国产成人夜色高潮福利影视| av亚洲精华国产精华精华| 在线看不卡av| 日韩网站在线看片你懂的| 国产三级欧美三级| 亚洲国产日韩av| 国精品**一区二区三区在线蜜桃| 国产传媒日韩欧美成人| 日本道免费精品一区二区三区| 日韩欧美国产午夜精品| ...xxx性欧美| 久久精品国产精品亚洲红杏| 91视频在线看| 欧美精品一区二区三| 一区二区三区在线不卡| 精品一区二区三区在线观看国产| 成人精品高清在线| 精品久久久久香蕉网| 亚洲综合色成人| 国产成人在线色| 欧美一级二级在线观看| 1000精品久久久久久久久|