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

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

?? graphics.cpp

?? 骨骼動畫....把魔獸模型解出的代碼..
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
//+-----------------------------------------------------------------------------
//| Included files
//+-----------------------------------------------------------------------------
#include "Graphics.h"
#include "MainWindow.h"


//+-----------------------------------------------------------------------------
//| Global objects
//+-----------------------------------------------------------------------------
GRAPHICS Graphics;


//+-----------------------------------------------------------------------------
//| Constructor
//+-----------------------------------------------------------------------------
GRAPHICS::GRAPHICS()
{
	CurrentGraphicsWindow = NULL;

	Direct3D = NULL;
	Direct3DDevice = NULL;
	LineVertexBuffer = NULL;
	ParticleVertexBuffer = NULL;
	GroundVertexBuffer = NULL;

	Material.Ambient = D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f);
	Material.Diffuse = D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f);
	Material.Specular = D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f);
	Material.Emissive = D3DXCOLOR(0.0f, 0.0f, 0.0f, 1.0f);
	Material.Power = 8.0f;

	Light.Type = D3DLIGHT_DIRECTIONAL;
	Light.Ambient = D3DXCOLOR(0.0f, 0.0f, 0.0f, 0.0f);
	Light.Diffuse = D3DXCOLOR(0.0f, 0.0f, 0.0f, 1.0f);
	Light.Specular = D3DXCOLOR(0.0f, 0.0f, 0.0f, 0.0f);
	Light.Position = D3DXVECTOR3(0.0f, 0.0f, 0.0f);
	Light.Direction = D3DXVECTOR3(0.0f, 0.0f, 0.0f);
	Light.Range = 0.0f;
	Light.Falloff = 0.0f;
	Light.Attenuation0 = 0.0f;
	Light.Attenuation1 = 0.0f;
	Light.Attenuation2 = 0.0f;
	Light.Theta = 0.0f;
	Light.Phi = 0.0f;

	Sprite = NULL;

	D3DXMatrixIdentity(&ProjectionMatrix);
	D3DXMatrixIdentity(&ViewMatrix);
	D3DXMatrixIdentity(&WorldMatrix);
	D3DXMatrixIdentity(&BillboardMatrix);
	D3DXMatrixIdentity(&WorldViewProjectionMatrix);

	CameraPosition = D3DXVECTOR3(0.0f, 0.0f, 0.0f);
	CameraDirection = D3DXVECTOR3(0.0f, 0.0f, 0.0f);

	ScreenWidth = 0;
	ScreenHeight = 0;
	ScreenAspect = 0.0f;
	FieldOfView = GRAPHICS_DEFAULT_FIELD_OF_VIEW;
	NearDistance = GRAPHICS_DEFAULT_NEAR_DISTANCE;
	FarDistance = GRAPHICS_DEFAULT_FAR_DISTANCE;

	Initialized = FALSE;
	DeviceLost = FALSE;
	UseShading = TRUE;
	UseCulling = TRUE;
}


//+-----------------------------------------------------------------------------
//| Destructor
//+-----------------------------------------------------------------------------
GRAPHICS::~GRAPHICS()
{
	Shutdown();
}


//+-----------------------------------------------------------------------------
//| Returns the Direct3D device pointer
//+-----------------------------------------------------------------------------
LPDIRECT3DDEVICE9 GRAPHICS::GetDevice() CONST
{
	return Direct3DDevice;
}


//+-----------------------------------------------------------------------------
//| Returns the graphics info pointer
//+-----------------------------------------------------------------------------
GRAPHICS_INFO* GRAPHICS::GetGraphicsInfo()
{
	return &GraphicsInfo;
}


//+-----------------------------------------------------------------------------
//| Returns the texture format
//+-----------------------------------------------------------------------------
D3DFORMAT GRAPHICS::GetTextureFormat() CONST
{
	return GraphicsInfo.TextureFormat;
}


//+-----------------------------------------------------------------------------
//| Returns the billboard matrix
//+-----------------------------------------------------------------------------
CONST D3DXMATRIX& GRAPHICS::GetBillboardMatrix() CONST
{
	return BillboardMatrix;
}


//+-----------------------------------------------------------------------------
//| Sets up the shaders
//+-----------------------------------------------------------------------------
BOOL GRAPHICS::SetupShaders()
{
	if(!Properties.ShadersAvailable()) return TRUE;

	if(!VertexShader.Setup(PATH_VERTEX_SHADER)) return FALSE;;
	if(!PixelShaderShaded.Setup(PATH_PIXEL_SHADER_SHADED)) return FALSE;
	if(!PixelShaderUnshaded.Setup(PATH_PIXEL_SHADER_UNSHADED)) return FALSE;

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Shuts down the shaders
//+-----------------------------------------------------------------------------
VOID GRAPHICS::ShutdownShaders()
{
	PixelShaderUnshaded.Shutdown();
	PixelShaderShaded.Shutdown();
	VertexShader.Shutdown();
}


//+-----------------------------------------------------------------------------
//| Enables or disables shading
//+-----------------------------------------------------------------------------
VOID GRAPHICS::SetShading(BOOL Shading)
{
	UseShading = Shading;
}


//+-----------------------------------------------------------------------------
//| Enables or disables backface culling
//+-----------------------------------------------------------------------------
VOID GRAPHICS::SetCulling(BOOL Culling)
{
	UseCulling = Culling;
}


//+-----------------------------------------------------------------------------
//| Sets the world camera
//+-----------------------------------------------------------------------------
VOID GRAPHICS::SetCamera(CONST CAMERA& Camera)
{
	SetCamera(Camera.GetSource(), Camera.GetTarget(), Camera.GetUp());
}


//+-----------------------------------------------------------------------------
//| Sets the world camera
//+-----------------------------------------------------------------------------
VOID GRAPHICS::SetCamera(CONST D3DXVECTOR3& Source, CONST D3DXVECTOR3& Target, CONST D3DXVECTOR3& Up)
{
	D3DXMatrixLookAtRH(&ViewMatrix, &Source, &Target, &Up);
	Direct3DDevice->SetTransform(D3DTS_VIEW, &ViewMatrix);
	D3DXMatrixTranspose(&BillboardMatrix, &ViewMatrix);

	BillboardMatrix._14 = 0.0f;
	BillboardMatrix._24 = 0.0f;
	BillboardMatrix._34 = 0.0f;
	BillboardMatrix._41 = 0.0f;
	BillboardMatrix._42 = 0.0f;
	BillboardMatrix._43 = 0.0f;

	CameraPosition = Source;
	CameraDirection = Target - Source;
	D3DXVec3Normalize(&CameraDirection, &CameraDirection);

	Light.Direction = CameraDirection;
}


//+-----------------------------------------------------------------------------
//| Sets a new field of view
//+-----------------------------------------------------------------------------
VOID GRAPHICS::SetFieldOfView(FLOAT NewFieldOfView)
{
	FieldOfView = NewFieldOfView;
}


//+-----------------------------------------------------------------------------
//| Sets a new clipping plane
//+-----------------------------------------------------------------------------
VOID GRAPHICS::SetClippingPlane(FLOAT NewNearDistance, FLOAT NewFarDistance)
{
	NearDistance = NewNearDistance;
	FarDistance = NewFarDistance;
}


//+-----------------------------------------------------------------------------
//| Sets up the graphics
//+-----------------------------------------------------------------------------
BOOL GRAPHICS::Setup()
{
	Shutdown();

	if(!CreateDummyWindow()) return FALSE;
	if(!CreateDirect3D()) return FALSE;
	if(!CheckCapabilities()) return FALSE;
	if(!CreateDirect3DDevice()) return FALSE;
	if(!CreateObjects()) return FALSE;

	SetRenderStates();
	SetProjection();

	GraphicsWindowReferenceObject.SetData(this);

	Initialized = TRUE;

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Shuts down the graphics
//+-----------------------------------------------------------------------------
VOID GRAPHICS::Shutdown()
{
	OnShutdown();

	SAFE_RELEASE(Sprite);

	SAFE_RELEASE(GroundVertexBuffer);
	SAFE_RELEASE(ParticleVertexBuffer);
	SAFE_RELEASE(LineVertexBuffer);
	SAFE_RELEASE(Direct3DDevice);
	SAFE_RELEASE(Direct3D);
	SAFE_DESTROY(Window);

	D3DXMatrixIdentity(&ProjectionMatrix);
	D3DXMatrixIdentity(&ViewMatrix);
	D3DXMatrixIdentity(&WorldMatrix);
	D3DXMatrixIdentity(&BillboardMatrix);

	ScreenWidth = 0;
	ScreenHeight = 0;
	ScreenAspect = 0.0f;
	FieldOfView = GRAPHICS_DEFAULT_FIELD_OF_VIEW;
	NearDistance = GRAPHICS_DEFAULT_NEAR_DISTANCE;
	FarDistance = GRAPHICS_DEFAULT_FAR_DISTANCE;

	Initialized = FALSE;
	DeviceLost = FALSE;
}


//+-----------------------------------------------------------------------------
//| Checks for a lost state
//+-----------------------------------------------------------------------------
BOOL GRAPHICS::CheckLostState()
{
	HRESULT Result;
	GRAPHICS_INFO TempGraphicsInfo;

	if(FAILED(Result = Direct3DDevice->TestCooperativeLevel()))
	{
		if(!DeviceLost) OnLostDevice();

		DeviceLost = TRUE;

		if(Result == D3DERR_DEVICELOST)
		{
			Error.SetMessage("The Direct3D device was lost!");
			return FALSE;
		}

		TempGraphicsInfo = GraphicsInfo;
		if(FAILED(Direct3DDevice->Reset(&TempGraphicsInfo.DeviceInfo)))
		{
			Error.SetMessage("Unable to reset the Direct3D device!");
			return FALSE;
		}

		SetRenderStates();
		OnResetDevice();

		Error.ClearMessage();

		DeviceLost = FALSE;
	}

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Begins rendering
//+-----------------------------------------------------------------------------
BOOL GRAPHICS::BeginRender(GRAPHICS_WINDOW& GraphicsWindow)
{
	LPDIRECT3DSWAPCHAIN9 SwapChain;

	if(!Initialized)
	{
		Error.SetMessage("The Direct3D device is not initialized!");
		return FALSE;
	}

	if(!CheckLostState()) return FALSE;

	CurrentGraphicsWindow = &GraphicsWindow;

	SwapChain = CurrentGraphicsWindow->GetSwapChain();
	if(SwapChain == NULL)
	{
		Error.SetMessage("Unable to retrieve the swap chain from the graphics window!");
		return FALSE;
	}

	if(FAILED(Direct3DDevice->SetRenderTarget(0, CurrentGraphicsWindow->GetBackBuffer())))
	{
		Error.SetMessage("Unable to set the swap chain back buffer as a render target!");
		return FALSE;
	}

	if(FAILED(Direct3DDevice->SetDepthStencilSurface(CurrentGraphicsWindow->GetZBuffer())))
	{
		Error.SetMessage("XXXXXXXXXXXX!");
		return FALSE;
	}

	ScreenWidth = CurrentGraphicsWindow->GetWidth();
	ScreenHeight = CurrentGraphicsWindow->GetHeight();
	ScreenAspect = CurrentGraphicsWindow->GetScreenAspect();

	SetProjection();

	Direct3DDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER, 0, 1.0f, 0);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品亚洲一区二区三区浴池| 久久精品日韩一区二区三区| 色婷婷综合久久久久中文| 日韩一级大片在线| 欧美性色黄大片| 在线亚洲欧美专区二区| 91免费看`日韩一区二区| 99久久精品国产一区二区三区| www..com久久爱| av亚洲精华国产精华| 91丨九色丨蝌蚪丨老版| 91麻豆国产香蕉久久精品| 日本国产一区二区| 欧美亚洲免费在线一区| 欧美性三三影院| 欧美一区二视频| 精品毛片乱码1区2区3区| 精品不卡在线视频| 欧美国产成人在线| 中文字幕一区二区三区四区| 亚洲私人黄色宅男| 亚洲一区二区3| 日本成人中文字幕在线视频| 精油按摩中文字幕久久| 成人午夜视频网站| 97精品超碰一区二区三区| 欧美性淫爽ww久久久久无| 在线播放日韩导航| 欧美成人精品高清在线播放| 久久久不卡网国产精品一区| 国产精品成人免费精品自在线观看 | 亚洲精品乱码久久久久久日本蜜臀| 综合久久久久久| 丝袜美腿亚洲一区二区图片| 在线不卡免费欧美| 日韩午夜激情免费电影| 久久精品人人爽人人爽| 一区二区三区精密机械公司| 性感美女久久精品| 国产自产2019最新不卡| 本田岬高潮一区二区三区| 欧日韩精品视频| 欧美精品一区男女天堂| 亚洲精品视频在线| 麻豆成人久久精品二区三区红 | 欧美日韩国产小视频在线观看| 欧美一区二区视频在线观看2020 | 国产一区二区三区电影在线观看| 成人午夜免费视频| 欧美日韩国产小视频在线观看| 久久精品视频一区二区| 亚洲尤物在线视频观看| 狠狠色狠狠色综合系列| 91色porny蝌蚪| 久久午夜老司机| 亚洲一区二区三区视频在线播放| 精品一区二区三区在线观看| 色一情一伦一子一伦一区| 久久精品一区二区三区不卡| 丝袜美腿亚洲一区| 91在线视频免费91| 久久看人人爽人人| 在线观看免费视频综合| 久久精品视频免费| 免费欧美在线视频| 91美女片黄在线观看91美女| 亚洲精品一区二区三区香蕉| 亚洲成人动漫在线观看| 91在线云播放| 亚洲国产精品国自产拍av| 免费人成精品欧美精品| 欧美色综合网站| 亚洲欧美日韩国产手机在线| 国产白丝精品91爽爽久久 | 日本午夜精品视频在线观看 | 成人免费高清视频在线观看| 91精品国产丝袜白色高跟鞋| 1区2区3区精品视频| 东方aⅴ免费观看久久av| 欧美一区二区三区爱爱| 亚洲综合视频在线观看| www.爱久久.com| 国产精品麻豆欧美日韩ww| 国产精选一区二区三区| 日韩免费性生活视频播放| 午夜av电影一区| 色综合久久中文综合久久97| 国产精品传媒入口麻豆| 成人综合在线观看| 日本一区二区三区dvd视频在线| 美女视频一区在线观看| 欧美精品粉嫩高潮一区二区| 亚洲成人综合视频| 欧日韩精品视频| 亚洲国产日韩综合久久精品| 91网页版在线| 亚洲精品日韩综合观看成人91| 成人av网址在线| 亚洲婷婷在线视频| 色综合天天天天做夜夜夜夜做| 国产精品久久看| 99re8在线精品视频免费播放| 国产精品欧美一区二区三区| 国产成人av福利| 中文字幕不卡一区| 91丨porny丨蝌蚪视频| 综合久久久久久| 色噜噜狠狠色综合欧洲selulu| 亚洲婷婷在线视频| 欧美体内she精视频| 午夜久久福利影院| 日韩免费视频一区| 国产乱子轮精品视频| 国产亚洲污的网站| 99久久精品免费看国产| 亚洲一区中文日韩| 欧美美女黄视频| 美女被吸乳得到大胸91| 欧美精品一区二区久久久| 国产精品 欧美精品| 亚洲图片欧美激情| 欧美日韩激情在线| 国产在线视频精品一区| 国产精品国模大尺度视频| eeuss鲁片一区二区三区| 亚洲一区影音先锋| 日韩欧美在线1卡| 国产成人一区在线| 亚洲黄色免费网站| 日韩一区二区电影在线| 国产1区2区3区精品美女| 亚洲人成在线观看一区二区| 欧美精品自拍偷拍| 国产成人精品三级麻豆| 综合久久久久久久| 欧美一区二区视频在线观看2022| 国产精品亚洲а∨天堂免在线| 亚洲视频香蕉人妖| 91精品综合久久久久久| 国产高清不卡一区| 亚洲一区影音先锋| 国产午夜精品久久| 欧美亚洲自拍偷拍| 六月丁香婷婷色狠狠久久| 亚洲国产高清在线观看视频| 日本精品视频一区二区| 九九热在线视频观看这里只有精品| 中文字幕乱码久久午夜不卡 | 亚洲天堂福利av| 91精品国产色综合久久不卡蜜臀| 懂色av一区二区在线播放| 亚洲成在人线在线播放| 欧美激情一二三区| 欧美一区二区三区在线观看| 成人三级伦理片| 青青草国产精品亚洲专区无| 日本一区二区动态图| 欧美一区二区三区在线看| 91一区二区三区在线播放| 男人的天堂亚洲一区| 亚洲伦理在线精品| 国产欧美一区二区精品秋霞影院| 欧美日韩一二区| www.激情成人| 久久99精品国产麻豆婷婷洗澡| 一区二区免费视频| 国产欧美1区2区3区| 91精品欧美一区二区三区综合在 | 久久精品人人爽人人爽| 欧美日韩国产经典色站一区二区三区 | 青椒成人免费视频| 亚洲九九爱视频| 国产日韩在线不卡| 日韩欧美国产三级电影视频| 色狠狠色狠狠综合| 高清国产一区二区| 国产又黄又大久久| 日韩国产一二三区| 亚洲一区欧美一区| 亚洲日本在线视频观看| 国产女人aaa级久久久级| 日韩一区二区在线观看视频| 欧美亚洲日本一区| 91豆麻精品91久久久久久| av影院午夜一区| 粉嫩av一区二区三区在线播放 | 欧美三级午夜理伦三级中视频| 成人av在线播放网址| 国产成人av一区二区三区在线观看| 麻豆一区二区三区| 日韩成人dvd| 石原莉奈在线亚洲二区| 亚欧色一区w666天堂| 一区二区在线观看av| 成人欧美一区二区三区黑人麻豆| 久久久久成人黄色影片| 久久久久久久久99精品| xfplay精品久久| 2021久久国产精品不只是精品| 日韩三级伦理片妻子的秘密按摩|