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

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

?? animmesh.cpp

?? DX例子中等難度的。全是新例子。VC2003
?? CPP
字號:
//=============================================================================
// SkinMesh.cpp: 動畫網格模型類的實現
//=============================================================================

#include "dxstdafx.h"
#include "AnimMesh.h"

//--------------------------------------------------------------------
// Desc: 構造函數和析構函數  Construction/Destruction
//--------------------------------------------------------------------
CAnimMesh::CAnimMesh()
{
	m_bPlayAnim          = true;
	m_pd3dDevice         = NULL;
    m_pAnimController    = NULL;
    m_pFrameRoot         = NULL;

	m_pAlloc = new CAllocateHierarchy();
}


//-----------------------------------------------------------------------------
// Desc: 構造函數和析構函數 
//-----------------------------------------------------------------------------
CAnimMesh::~CAnimMesh()
{
	D3DXFrameDestroy(m_pFrameRoot, m_pAlloc);
    SAFE_RELEASE(m_pAnimController);
	delete m_pAlloc;
}


//-----------------------------------------------------------------------------
// Desc:創建并加載蒙皮網格模型
//-----------------------------------------------------------------------------
HRESULT CAnimMesh::OnCreate(LPDIRECT3DDEVICE9 pD3DDevice, WCHAR *strFileName)
{
	HRESULT hr;
	m_pd3dDevice = pD3DDevice;
	V_RETURN(LoadFromXFile(strFileName));
	return S_OK;
}


//-----------------------------------------------------------------------------
// Desc: 從文件加載蒙皮網格模型
//-----------------------------------------------------------------------------
HRESULT CAnimMesh::LoadFromXFile(WCHAR *strFileName)
{
    HRESULT hr;

	//根據文件名, 從指定的路經查找文件
	WCHAR strPath[MAX_PATH];
	DXUTFindDXSDKMediaFileCch( strPath, sizeof(strPath) / sizeof(WCHAR), strFileName );

	//從.X文件加載層次框架和動畫數據
    V_RETURN(D3DXLoadMeshHierarchyFromX(strPath, D3DXMESH_MANAGED, m_pd3dDevice, 
		                            m_pAlloc, NULL, &m_pFrameRoot, &m_pAnimController));
	
	//計算框架對象的邊界球
    V_RETURN(D3DXFrameCalculateBoundingSphere(m_pFrameRoot, &m_vObjectCenter, &m_fObjectRadius));

	return S_OK;
}


//-----------------------------------------------------------------------------
// Desc: 更新框架并繪制框架
//       (1)用m_pAnimController->AdvanceTime()設置時間,m_pAnimController是
//          類LPD3DXANIMATIONCONTROLLER的一個對象
//       (2)用函數CSkinMesh::UpdateFrameMatrices()更新框架
//       (3)用函數CSkinMesh::DrawFrame()繪制框架
//-----------------------------------------------------------------------------
HRESULT CAnimMesh::Render(D3DXMATRIXA16* matWorld, double fElapsedAppTime)
{
    if( 0.0f == fElapsedAppTime ) 
        return S_OK;

	if (m_bPlayAnim && m_pAnimController != NULL)
		m_pAnimController->AdvanceTime( fElapsedAppTime, NULL );

	UpdateFrameMatrices(m_pFrameRoot, matWorld);  //調用子函數
	DrawFrame(m_pFrameRoot);  //調用子函數

	return S_OK;
}


//-----------------------------------------------------------------------------
// Desc:計算各個骨骼的組合變換矩陣
//-----------------------------------------------------------------------------
VOID CAnimMesh::UpdateFrameMatrices(LPD3DXFRAME pFrameBase, LPD3DXMATRIX pParentMatrix)
{
    D3DXFRAME_DERIVED *pFrame = (D3DXFRAME_DERIVED*)pFrameBase;

    if (pParentMatrix != NULL)
        D3DXMatrixMultiply(&pFrame->CombinedTransformationMatrix, &pFrame->TransformationMatrix, pParentMatrix);
    else
        pFrame->CombinedTransformationMatrix = pFrame->TransformationMatrix;

    if (pFrame->pFrameSibling != NULL)
    {
        UpdateFrameMatrices(pFrame->pFrameSibling, pParentMatrix);
    }

    if (pFrame->pFrameFirstChild != NULL)
    {
        UpdateFrameMatrices(pFrame->pFrameFirstChild, &pFrame->CombinedTransformationMatrix);
    }
}


//-----------------------------------------------------------------------------
// Desc: 繪制框架.
//       先用CSkinMesh::DrawMeshContainer()繪制一個LPD3DXMESHCONTAINER類型
//       的變量pMeshContainer.然后遞歸繪制同一級框架和子一級框架。
//-----------------------------------------------------------------------------
VOID CAnimMesh::DrawFrame(LPD3DXFRAME pFrame)
{
    LPD3DXMESHCONTAINER pMeshContainer;
	
    pMeshContainer = pFrame->pMeshContainer;
    while (pMeshContainer != NULL)
    {
        DrawMeshContainer(pMeshContainer, pFrame); //調用子函數
        pMeshContainer = pMeshContainer->pNextMeshContainer;
    }
	
    if (pFrame->pFrameSibling != NULL)
    {
        DrawFrame(pFrame->pFrameSibling);
    }
	
    if (pFrame->pFrameFirstChild != NULL)
    {
        DrawFrame(pFrame->pFrameFirstChild);
    }
}


//-----------------------------------------------------------------------------
// Name: DrawMeshContainer()
// Desc: Called to render a mesh in the hierarchy
//-----------------------------------------------------------------------------
VOID CAnimMesh::DrawMeshContainer(LPD3DXMESHCONTAINER pMeshContainerBase, LPD3DXFRAME pFrameBase)
{
	D3DXMESHCONTAINER_DERIVED *pMeshContainer = (D3DXMESHCONTAINER_DERIVED*)pMeshContainerBase;
	D3DXFRAME_DERIVED *pFrame = (D3DXFRAME_DERIVED*)pFrameBase;
	UINT iMaterial;

	m_pd3dDevice->SetTransform(D3DTS_WORLD, &pFrame->CombinedTransformationMatrix);

	for (iMaterial = 0; iMaterial < pMeshContainer->NumMaterials; iMaterial++)
	{
		m_pd3dDevice->SetMaterial( &pMeshContainer->pMaterials[iMaterial].MatD3D );
		m_pd3dDevice->SetTexture( 0, pMeshContainer->ppTextures[iMaterial] );
		pMeshContainer->MeshData.pMesh->DrawSubset(iMaterial);
	}
}


//-----------------------------------------------------------------------------
// Desc: 釋放蒙皮網格模型
//-----------------------------------------------------------------------------
HRESULT CAnimMesh::OnDestory()
{
	delete this;
	return S_OK;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲免费观看高清在线观看| 日韩avvvv在线播放| 国产人成一区二区三区影院| 亚洲一区二区四区蜜桃| 成人午夜av电影| 亚洲精品乱码久久久久久久久| 成人黄色av电影| 国产成人午夜视频| 国产麻豆精品视频| 波多野结衣在线aⅴ中文字幕不卡| 国产一区二区三区在线观看精品 | 欧美在线你懂的| 色婷婷综合五月| 欧美视频一二三区| 欧美另类变人与禽xxxxx| 欧美另类变人与禽xxxxx| 5月丁香婷婷综合| 日日噜噜夜夜狠狠视频欧美人| 欧美日本在线播放| 7777精品伊人久久久大香线蕉的 | 国产精品系列在线观看| 风间由美性色一区二区三区| 91毛片在线观看| 欧美老年两性高潮| 国产午夜亚洲精品午夜鲁丝片 | 99re这里只有精品6| 欧美日韩成人综合| 国产亚洲精品中文字幕| 一区二区三区精品| 六月丁香综合在线视频| 一区二区三区资源| 波多野结衣中文一区| 在线精品视频一区二区三四| 欧美日韩国产免费一区二区| 精品毛片乱码1区2区3区| 国产精品久久久久久一区二区三区| 综合欧美亚洲日本| 日本不卡在线视频| 92精品国产成人观看免费| 欧美放荡的少妇| 综合色中文字幕| 秋霞av亚洲一区二区三| 成人毛片视频在线观看| 678五月天丁香亚洲综合网| 国产精品欧美综合在线| 丝袜a∨在线一区二区三区不卡| 国产最新精品精品你懂的| 色八戒一区二区三区| 久久亚洲二区三区| 天堂一区二区在线免费观看| 色先锋资源久久综合| 久久蜜桃一区二区| 热久久一区二区| 欧美日韩激情一区二区| 国产精品热久久久久夜色精品三区| 午夜视频久久久久久| 91黄色免费看| ㊣最新国产の精品bt伙计久久| 麻豆精品一区二区三区| 欧美视频一区二区在线观看| 国产精品天干天干在观线| 国产在线精品免费| 91精品国产乱码| 日本午夜一本久久久综合| 欧美三区在线观看| 亚洲欧美日韩国产成人精品影院| 成人一区二区在线观看| 国产午夜精品在线观看| 国产精品99久久久| 久久久久久97三级| 狠狠色丁香久久婷婷综合丁香| 91麻豆精品国产自产在线| 亚洲国产精品一区二区久久恐怖片| 91在线观看成人| 国产无一区二区| 久久亚洲精精品中文字幕早川悠里| 国产欧美一区视频| 国产一区二区三区在线观看免费视频 | 综合激情成人伊人| youjizz久久| 一区精品在线播放| 一本久久a久久免费精品不卡| 国产精品日韩精品欧美在线| 99久久精品免费看国产免费软件| 国产精品的网站| 色婷婷av一区二区三区软件| 一区二区三区在线不卡| 欧美日韩大陆一区二区| 久久国产精品99精品国产| 26uuu久久综合| jlzzjlzz国产精品久久| 波多野结衣一区二区三区| 中日韩免费视频中文字幕| 精品一二线国产| xnxx国产精品| 成人免费看视频| 亚洲一区二区五区| 日韩免费成人网| 高潮精品一区videoshd| 国产精品第13页| 日韩一区二区精品| 国产suv一区二区三区88区| 亚洲精品成人少妇| 制服.丝袜.亚洲.另类.中文| 国产精品系列在线播放| 一区二区三区波多野结衣在线观看| 欧美福利电影网| 成人白浆超碰人人人人| 亚洲v中文字幕| 久久精品一区二区三区av| 欧美视频在线一区| 国产风韵犹存在线视精品| 亚洲一二三区在线观看| 高清beeg欧美| 久久er99精品| 欧美日韩精品一区二区天天拍小说| 久久精品国产精品亚洲精品| 国产精品进线69影院| 日韩欧美另类在线| 91一区一区三区| 国产精品一区在线观看你懂的| 欧美韩国日本一区| 欧美日韩中文字幕精品| 成人综合在线网站| 久久国产人妖系列| 亚洲一区二区在线免费看| 国产精品妹子av| 久久众筹精品私拍模特| 欧洲色大大久久| 色综合久久中文综合久久97| 国产一区二区在线看| 青青草精品视频| 日日骚欧美日韩| 亚洲欧美电影院| 亚洲欧洲美洲综合色网| 久久精品一区二区三区av| 日韩三级电影网址| 欧美日韩另类国产亚洲欧美一级| 不卡av电影在线播放| 久久久久国色av免费看影院| 91麻豆精品91久久久久久清纯| 在线亚洲一区二区| k8久久久一区二区三区| 国产成人免费视| 国产精品99久久久久久久vr| 狠狠色丁香九九婷婷综合五月| 日韩电影在线观看一区| 亚洲成av人片在线观看无码| 一区二区三区日韩欧美| 中文字幕在线观看不卡视频| 国产精品毛片久久久久久| 欧美激情综合在线| 国产日韩v精品一区二区| 国产亚洲一本大道中文在线| 精品国产乱码久久久久久蜜臀| 91精品黄色片免费大全| 日韩精品在线网站| 精品人伦一区二区色婷婷| 日韩欧美在线影院| 精品国产伦一区二区三区观看体验| 91精品在线观看入口| 在线观看91精品国产麻豆| 69堂国产成人免费视频| 综合在线观看色| 国产亚洲一区二区三区四区| 亚洲成人av福利| 日韩欧美一级二级三级| 欧美一区二区三区男人的天堂| 日韩亚洲欧美一区| 精品动漫一区二区三区在线观看| 欧美精品一区二区三区在线播放| 久久众筹精品私拍模特| 综合激情成人伊人| 日韩精品每日更新| 国产精品一级二级三级| 99久久精品国产精品久久| 色爱区综合激月婷婷| 91精品国产综合久久久久| 久久久五月婷婷| 亚洲视频资源在线| 免费高清在线视频一区·| 国产 日韩 欧美大片| 日本高清不卡一区| 精品久久久久久久久久久久包黑料 | 综合欧美亚洲日本| 日日夜夜一区二区| 国产一区二区三区黄视频 | 成人永久aaa| 欧美三级三级三级爽爽爽| 欧美日韩欧美一区二区| 欧美变态tickling挠脚心| 中文字幕日本不卡| 日韩黄色免费电影| 成人动漫中文字幕| 91麻豆精品国产91久久久久久久久| 久久久久久黄色| 日日欢夜夜爽一区| 91久久精品一区二区| 久久婷婷国产综合精品青草| 一区二区三区在线观看动漫 |