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

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

?? transform.cpp

?? Introduction to directx9 3d game programming 一書的源代碼
?? CPP
字號:
//////////////////////////////////////////////////////////////////////////////////////////////////
// 
// File: transform.cpp
// 
// Author: Frank Luna (C) All Rights Reserved
//
// System: AMD Athlon 1800+ XP, 512 DDR, Geforce 3, Windows XP, MSVC++ 7.0 
//
// Desc: Deomstrates transforming an object by the view and projection matrices,
//       and setting the vertex color using a vertex shader.  You will have to
//       switch to the REF device 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* TransformShader    = 0;
ID3DXConstantTable* TransformConstantTable = 0;

ID3DXMesh* Teapot = 0;

D3DXHANDLE TransformViewProjHandle = 0;

D3DXMATRIX ProjMatrix;

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

	//
	// Create geometry.
	//

	D3DXCreateTeapot(Device, &Teapot, 0);

	//
	// Compile shader.
	//

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

	hr = D3DXCompileShaderFromFile(
		"transform.txt",
		0,
		0,
		"Main",  // entry point function name
		"vs_1_1",// shader version to compile to
		D3DXSHADER_DEBUG, 
		&shader,
		&errorBuffer,
		&TransformConstantTable);

	// 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;
	}

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

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

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

	// 
	// Get Handles.
	//

	TransformViewProjHandle = TransformConstantTable->GetConstantByName(0, "ViewProjMatrix");

	//
	// Set shader constants:
	//

	TransformConstantTable->SetDefaults(Device);
 
	//
	// Set Projection Matrix.
	//

	D3DXMatrixPerspectiveFovLH(
			&ProjMatrix, D3DX_PI * 0.25f, 
			(float)Width / (float)Height, 1.0f, 1000.0f);

	//
	// Set Misc. States.
	//

	Device->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME);

	return true;
}

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

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 V;
		D3DXMatrixLookAtLH(&V, &position, &target, &up);

		// combine view and projection transformations
		D3DXMATRIX ViewProj = V * ProjMatrix;

		TransformConstantTable->SetMatrix(
			Device,
			TransformViewProjHandle, 
			&ViewProj);

		//
		// Render
		//

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

		Device->SetVertexShader(TransformShader);

		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一区二区三区免费野_久草精品视频
91精品国产综合久久久久久久 | 亚洲一区免费视频| 成人av高清在线| 国产精品免费看片| 色综合一个色综合| 亚洲成人精品影院| 欧美mv日韩mv| 成人免费看黄yyy456| 一区二区三区在线免费播放| 久久久久久亚洲综合| 国产精品正在播放| 亚洲欧洲日本在线| 欧美日本韩国一区二区三区视频| 蜜桃视频一区二区三区在线观看| 亚洲精品在线电影| 91视视频在线观看入口直接观看www| 一区2区3区在线看| 2024国产精品| 97超碰欧美中文字幕| 天堂精品中文字幕在线| 久久久久国产精品麻豆| 日本道色综合久久| 久久99久久精品| 亚洲日本在线观看| 日韩精品中午字幕| 99久久久久久99| 蜜臀久久99精品久久久久久9| 久久精品亚洲精品国产欧美| 欧洲精品一区二区| 国产精品夜夜爽| 亚洲一二三四区| 国产日韩精品视频一区| 欧美视频完全免费看| 国产一区二区三区四区五区入口 | 成人性色生活片| 日欧美一区二区| 国产精品拍天天在线| 555夜色666亚洲国产免| 波多野结衣一区二区三区| 日韩激情视频在线观看| 综合色中文字幕| 2023国产精品| 欧美一级黄色录像| 在线看国产一区| 波波电影院一区二区三区| 国产中文字幕一区| 日本不卡一区二区| 亚洲伦在线观看| 国产欧美一二三区| 欧美大片一区二区| 7777精品伊人久久久大香线蕉完整版| 成人sese在线| 岛国精品一区二区| 久99久精品视频免费观看| 一区二区欧美国产| 中文字幕二三区不卡| 精品国产一区二区三区四区四| 欧美日韩国产在线观看| 一本色道久久综合狠狠躁的推荐 | 久久亚洲一区二区三区四区| 欧美日韩免费在线视频| 色94色欧美sute亚洲线路一ni| 国产iv一区二区三区| 毛片av一区二区| 风间由美一区二区av101| 久久成人av少妇免费| 奇米777欧美一区二区| 午夜精品视频在线观看| 亚洲成人激情综合网| 亚洲成人自拍偷拍| 一区二区三区四区乱视频| 亚洲视频免费看| 亚洲人成在线播放网站岛国| 亚洲欧美怡红院| 亚洲欧洲日韩女同| 亚洲毛片av在线| 亚洲尤物在线视频观看| 亚洲成人www| 日韩电影免费一区| 老色鬼精品视频在线观看播放| 麻豆精品新av中文字幕| 韩国v欧美v日本v亚洲v| 国产成人免费视频一区| 99在线视频精品| 99re这里只有精品首页| 在线精品视频一区二区| 51午夜精品国产| ww久久中文字幕| 综合久久给合久久狠狠狠97色| 亚洲婷婷在线视频| 亚洲福利一区二区三区| 麻豆一区二区三| 粉嫩高潮美女一区二区三区| av电影在线不卡| 欧美影院精品一区| 91精品麻豆日日躁夜夜躁| 欧美一级艳片视频免费观看| 久久综合狠狠综合久久激情| 欧美激情一区二区三区蜜桃视频| 综合久久综合久久| 日韩精品欧美精品| 成人一级片在线观看| 在线看国产一区二区| 精品少妇一区二区三区在线播放| 中文字幕免费不卡| 午夜久久电影网| 国产精一品亚洲二区在线视频| 成人久久久精品乱码一区二区三区| 一本大道久久a久久精品综合| 91精品免费在线| 国产精品乱人伦一区二区| 一区二区三区在线视频免费 | 国产欧美日韩在线观看| 一区二区免费在线| 国产一区二区福利视频| 91电影在线观看| 久久久久国色av免费看影院| 亚洲综合另类小说| 国产成人精品亚洲午夜麻豆| 欧美午夜寂寞影院| 国产精品久久久久天堂| 免费观看久久久4p| 色综合色狠狠综合色| 欧美电影精品一区二区| 一区二区三区 在线观看视频 | 免费一区二区视频| 99久久国产综合精品女不卡| 欧美日韩三级一区| 国产精品国产自产拍在线| 老司机精品视频线观看86| 欧美亚洲综合网| 亚洲视频每日更新| 国产大片一区二区| 日韩精品一区在线| 亚洲自拍偷拍网站| 白白色亚洲国产精品| 精品国产电影一区二区| 亚洲一级二级在线| 成人免费毛片片v| 精品黑人一区二区三区久久| 午夜电影一区二区| 色婷婷综合久久久中文字幕| 国产亚洲欧洲一区高清在线观看| 三级欧美韩日大片在线看| 色999日韩国产欧美一区二区| 国产精品三级在线观看| 寂寞少妇一区二区三区| 欧美一区二区三区免费在线看| 亚洲香肠在线观看| 在线观看免费一区| 综合激情成人伊人| av亚洲产国偷v产偷v自拍| 国产色产综合色产在线视频| 国产综合一区二区| 精品日本一线二线三线不卡| 日本不卡视频一二三区| 在线成人小视频| 视频在线观看国产精品| 欧美日韩国产综合久久| 午夜一区二区三区在线观看| 欧美亚洲免费在线一区| 亚洲午夜电影在线| 欧美午夜精品久久久久久超碰| 亚洲美女区一区| 欧美性淫爽ww久久久久无| 亚洲国产精品久久艾草纯爱| 91福利视频在线| 亚洲成a人片在线不卡一二三区 | 一区二区三区在线视频观看58| 91一区在线观看| 亚洲欧美日韩中文字幕一区二区三区| eeuss国产一区二区三区| 中文字幕在线不卡一区| 色婷婷综合久色| 天堂蜜桃91精品| 日韩欧美精品三级| 国产麻豆视频一区二区| 国产精品美日韩| 91视视频在线观看入口直接观看www | 国产精品久久午夜| 国产a视频精品免费观看| 亚洲私人黄色宅男| 欧美日韩一区二区三区免费看| 天堂资源在线中文精品| 精品福利av导航| 成人一区在线观看| 一区二区三区中文字幕电影| 欧美疯狂性受xxxxx喷水图片| 免费观看一级欧美片| 国产欧美精品一区二区色综合朱莉| www.亚洲精品| 亚洲成人福利片| 2022国产精品视频| 91猫先生在线| 日本色综合中文字幕| 欧美国产日韩在线观看| 欧日韩精品视频| 久久精品二区亚洲w码| 亚洲欧美在线视频观看| 在线不卡免费av|