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

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

?? dxutmesh.cpp

?? VC中使用C#作為腳本引擎編程
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
    if( m_pMesh )  m_pMesh->Destroy();
    if( m_pChild ) m_pChild->Destroy();
    if( m_pNext )  m_pNext->Destroy();

    SAFE_DELETE( m_pMesh );
    SAFE_DELETE( m_pNext );
    SAFE_DELETE( m_pChild );

    return S_OK;
}




//-----------------------------------------------------------------------------
HRESULT CDXUTMeshFrame::RestoreDeviceObjects( LPDIRECT3DDEVICE9 pd3dDevice )
{
    if( m_pMesh )  m_pMesh->RestoreDeviceObjects( pd3dDevice );
    if( m_pChild ) m_pChild->RestoreDeviceObjects( pd3dDevice );
    if( m_pNext )  m_pNext->RestoreDeviceObjects( pd3dDevice );
    return S_OK;
}




//-----------------------------------------------------------------------------
HRESULT CDXUTMeshFrame::InvalidateDeviceObjects()
{
    if( m_pMesh )  m_pMesh->InvalidateDeviceObjects();
    if( m_pChild ) m_pChild->InvalidateDeviceObjects();
    if( m_pNext )  m_pNext->InvalidateDeviceObjects();
    return S_OK;
}




//-----------------------------------------------------------------------------
HRESULT CDXUTMeshFrame::Render( LPDIRECT3DDEVICE9 pd3dDevice, bool bDrawOpaqueSubsets,
                           bool bDrawAlphaSubsets, D3DXMATRIX* pmatWorldMatrix )
{
    // For pure devices, specify the world transform. If the world transform is not
    // specified on pure devices, this function will fail.

    D3DXMATRIX matSavedWorld, matWorld;

    if ( NULL == pmatWorldMatrix )
        pd3dDevice->GetTransform( D3DTS_WORLD, &matSavedWorld );
    else
        matSavedWorld = *pmatWorldMatrix;

    D3DXMatrixMultiply( &matWorld, &m_mat, &matSavedWorld );
    pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );

    if( m_pMesh )
        m_pMesh->Render( pd3dDevice, bDrawOpaqueSubsets, bDrawAlphaSubsets );

    if( m_pChild )
        m_pChild->Render( pd3dDevice, bDrawOpaqueSubsets, bDrawAlphaSubsets, &matWorld );

    pd3dDevice->SetTransform( D3DTS_WORLD, &matSavedWorld );

    if( m_pNext )
        m_pNext->Render( pd3dDevice, bDrawOpaqueSubsets, bDrawAlphaSubsets, &matSavedWorld );

    return S_OK;
}




//-----------------------------------------------------------------------------
HRESULT CDXUTMeshFile::LoadFrame( LPDIRECT3DDEVICE9 pd3dDevice,
                             LPD3DXFILEDATA pFileData,
                             CDXUTMeshFrame* pParentFrame )
{
    LPD3DXFILEDATA   pChildData = NULL;
    GUID Guid;
    SIZE_T      cbSize;
    CDXUTMeshFrame*  pCurrentFrame;
    HRESULT     hr;

    // Get the type of the object
    if( FAILED( hr = pFileData->GetType( &Guid ) ) )
        return hr;

    if( Guid == TID_D3DRMMesh )
    {
        hr = LoadMesh( pd3dDevice, pFileData, pParentFrame );
        if( FAILED(hr) )
            return hr;
    }
    if( Guid == TID_D3DRMFrameTransformMatrix )
    {
        D3DXMATRIX* pmatMatrix;
        hr = pFileData->Lock(&cbSize, (LPCVOID*)&pmatMatrix );
        if( FAILED(hr) )
            return hr;

        // Update the parent's matrix with the new one
        pParentFrame->SetMatrix( pmatMatrix );
    }
    if( Guid == TID_D3DRMFrame )
    {
        // Get the frame name
        CHAR  strAnsiName[512] = "";
        WCHAR strName[512];
        SIZE_T dwNameLength = 512;
        SIZE_T cChildren;
        if( FAILED( hr = pFileData->GetName( strAnsiName, &dwNameLength ) ) )
            return hr;

        WideCharToMultiByte( CP_ACP, 0, strName, -1, strAnsiName, 512, NULL, NULL );
        strName[511] = 0;

        // Create the frame
        pCurrentFrame = new CDXUTMeshFrame( strName );
        if( pCurrentFrame == NULL )
            return E_OUTOFMEMORY;

        pCurrentFrame->m_pNext = pParentFrame->m_pChild;
        pParentFrame->m_pChild = pCurrentFrame;

        // Enumerate child objects
        pFileData->GetChildren(&cChildren);
        for (UINT iChild = 0; iChild < cChildren; iChild++)
        {
            // Query the child for its FileData
            hr = pFileData->GetChild(iChild, &pChildData );
            if( SUCCEEDED(hr) )
            {
                hr = LoadFrame( pd3dDevice, pChildData, pCurrentFrame );
                SAFE_RELEASE( pChildData );
            }

            if( FAILED(hr) )
                return hr;
        }
    }

    return S_OK;
}




//-----------------------------------------------------------------------------
HRESULT CDXUTMeshFile::LoadMesh( LPDIRECT3DDEVICE9 pd3dDevice,
                            LPD3DXFILEDATA pFileData,
                            CDXUTMeshFrame* pParentFrame )
{
    // Currently only allowing one mesh per frame
    if( pParentFrame->m_pMesh )
        return E_FAIL;

    // Get the mesh name
    CHAR  strAnsiName[512] = {0};
    WCHAR strName[512];
    SIZE_T dwNameLength = 512;
    HRESULT hr;
    if( FAILED( hr = pFileData->GetName( strAnsiName, &dwNameLength ) ) )
        return hr;

    MultiByteToWideChar( CP_ACP, 0, strAnsiName, -1, strName, 512 );
    strName[511] = 0;

    // Create the mesh
    pParentFrame->m_pMesh = new CDXUTMesh( strName );
    if( pParentFrame->m_pMesh == NULL )
        return E_OUTOFMEMORY;
    pParentFrame->m_pMesh->Create( pd3dDevice, pFileData );

    return S_OK;
}




//-----------------------------------------------------------------------------
HRESULT CDXUTMeshFile::CreateFromResource( LPDIRECT3DDEVICE9 pd3dDevice, LPCWSTR strResource, LPCWSTR strType )
{
    LPD3DXFILE           pDXFile   = NULL;
    LPD3DXFILEENUMOBJECT pEnumObj  = NULL;
    LPD3DXFILEDATA       pFileData = NULL;
    HRESULT hr;
    SIZE_T cChildren;

    // Create a x file object
    if( FAILED( hr = D3DXFileCreate( &pDXFile ) ) )
        return E_FAIL;

    // Register templates for d3drm and patch extensions.
    if( FAILED( hr = pDXFile->RegisterTemplates( (void*)D3DRM_XTEMPLATES,
                                                 D3DRM_XTEMPLATE_BYTES ) ) )
    {
        SAFE_RELEASE( pDXFile );
        return E_FAIL;
    }
    
    CHAR strTypeAnsi[MAX_PATH];
    CHAR strResourceAnsi[MAX_PATH];

    WideCharToMultiByte( CP_ACP, 0, strType, -1, strTypeAnsi, MAX_PATH, NULL, NULL );
    strTypeAnsi[MAX_PATH-1] = 0;

    WideCharToMultiByte( CP_ACP, 0, strResource, -1, strResourceAnsi, MAX_PATH, NULL, NULL );
    strResourceAnsi[MAX_PATH-1] = 0;

    D3DXF_FILELOADRESOURCE dxlr;
    dxlr.hModule = NULL;
    dxlr.lpName = strResourceAnsi;
    dxlr.lpType = strTypeAnsi;

    // Create enum object
    hr = pDXFile->CreateEnumObject( (void*)&dxlr, D3DXF_FILELOAD_FROMRESOURCE, 
                                    &pEnumObj );
    if( FAILED(hr) )
    {
        SAFE_RELEASE( pDXFile );
        return hr;
    }

    // Enumerate top level objects (which are always frames)
    pEnumObj->GetChildren(&cChildren);
    for (UINT iChild = 0; iChild < cChildren; iChild++)
    {
        hr = pEnumObj->GetChild(iChild, &pFileData);
        if (FAILED(hr))
            return hr;

        hr = LoadFrame( pd3dDevice, pFileData, this );
        SAFE_RELEASE( pFileData );
        if( FAILED(hr) )
        {
            SAFE_RELEASE( pEnumObj );
            SAFE_RELEASE( pDXFile );
            return E_FAIL;
        }
    }

    SAFE_RELEASE( pFileData );
    SAFE_RELEASE( pEnumObj );
    SAFE_RELEASE( pDXFile );

    return S_OK;
}




//-----------------------------------------------------------------------------
HRESULT CDXUTMeshFile::Create( LPDIRECT3DDEVICE9 pd3dDevice, LPCWSTR strFilename )
{
    LPD3DXFILE           pDXFile   = NULL;
    LPD3DXFILEENUMOBJECT pEnumObj  = NULL;
    LPD3DXFILEDATA       pFileData = NULL;
    HRESULT hr;
    SIZE_T cChildren;

    // Create a x file object
    if( FAILED( hr = D3DXFileCreate( &pDXFile ) ) )
        return E_FAIL;

    // Register templates for d3drm and patch extensions.
    if( FAILED( hr = pDXFile->RegisterTemplates( (void*)D3DRM_XTEMPLATES,
                                                 D3DRM_XTEMPLATE_BYTES ) ) )
    {
        SAFE_RELEASE( pDXFile );
        return E_FAIL;
    }

    // Find the path to the file, and convert it to ANSI (for the D3DXOF API)
    WCHAR strPath[MAX_PATH];
    CHAR  strPathANSI[MAX_PATH];
    DXUTFindDXSDKMediaFileCch( strPath, sizeof(strPath) / sizeof(WCHAR), strFilename );
    
    
    WideCharToMultiByte( CP_ACP, 0, strPath, -1, strPathANSI, MAX_PATH, NULL, NULL );
    strPathANSI[MAX_PATH-1] = 0;

    
    // Create enum object
    hr = pDXFile->CreateEnumObject( (void*)strPathANSI, D3DXF_FILELOAD_FROMFILE, 
                                    &pEnumObj );
    if( FAILED(hr) )
    {
        SAFE_RELEASE( pDXFile );
        return hr;
    }

    // Enumerate top level objects (which are always frames)
    pEnumObj->GetChildren(&cChildren);
    for (UINT iChild = 0; iChild < cChildren; iChild++)
    {
        hr = pEnumObj->GetChild(iChild, &pFileData);
        if (FAILED(hr))
            return hr;

        hr = LoadFrame( pd3dDevice, pFileData, this );
        SAFE_RELEASE( pFileData );
        if( FAILED(hr) )
        {
            SAFE_RELEASE( pEnumObj );
            SAFE_RELEASE( pDXFile );
            return E_FAIL;
        }
    }

    SAFE_RELEASE( pFileData );
    SAFE_RELEASE( pEnumObj );
    SAFE_RELEASE( pDXFile );

    return S_OK;
}




//-----------------------------------------------------------------------------
HRESULT CDXUTMeshFile::Render( LPDIRECT3DDEVICE9 pd3dDevice, D3DXMATRIX* pmatWorldMatrix )
{

    // For pure devices, specify the world transform. If the world transform is not
    // specified on pure devices, this function will fail.

    // Set up the world transformation
    D3DXMATRIX matSavedWorld, matWorld;

    if ( NULL == pmatWorldMatrix )
        pd3dDevice->GetTransform( D3DTS_WORLD, &matSavedWorld );
    else
        matSavedWorld = *pmatWorldMatrix;

    D3DXMatrixMultiply( &matWorld, &matSavedWorld, &m_mat );
    pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );

    // Render opaque subsets in the meshes
    if( m_pChild )
        m_pChild->Render( pd3dDevice, TRUE, FALSE, &matWorld );

    // Enable alpha blending
    pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
    pd3dDevice->SetRenderState( D3DRS_SRCBLEND,  D3DBLEND_SRCALPHA );
    pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );

    // Render alpha subsets in the meshes
    if( m_pChild )
        m_pChild->Render( pd3dDevice, FALSE, TRUE, &matWorld );

    // Restore state
    pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, FALSE );
    pd3dDevice->SetTransform( D3DTS_WORLD, &matSavedWorld );

    return S_OK;
}




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合成人精品亚洲另类欧美| 欧美在线观看视频一区二区 | av激情综合网| 国产精品一区二区果冻传媒| 麻豆成人综合网| 美国十次了思思久久精品导航| 欧美a级一区二区| 日韩av中文在线观看| 麻豆国产91在线播放| 国产在线国偷精品免费看| 国内成人免费视频| 国产寡妇亲子伦一区二区| 国产福利一区在线| 成人免费黄色大片| 在线免费观看一区| 666欧美在线视频| 久久亚洲综合av| 国产欧美精品日韩区二区麻豆天美| 国产欧美一区二区在线| 亚洲女性喷水在线观看一区| 亚洲成人资源在线| 国产伦精品一区二区三区在线观看| 国产精品一品视频| 在线视频国内一区二区| 欧美视频中文字幕| 久久青草国产手机看片福利盒子| 国产亚洲欧美日韩日本| 中文字幕一区二区三区在线播放| 依依成人综合视频| 日本不卡在线视频| 成人亚洲精品久久久久软件| 欧美亚洲高清一区二区三区不卡| 欧美日韩黄色影视| 久久精品日韩一区二区三区| 亚洲精品高清在线| 久久99九九99精品| 欧美一区二区在线观看| 国产日韩欧美不卡| 午夜欧美电影在线观看| 国产高清不卡二三区| 欧美日高清视频| 国产午夜一区二区三区| 午夜激情久久久| 懂色av噜噜一区二区三区av| 欧美美女bb生活片| 国产精品福利在线播放| 蜜臀精品久久久久久蜜臀 | 天堂精品中文字幕在线| 国产99久久久国产精品潘金| 7777女厕盗摄久久久| 亚洲美女精品一区| 国产iv一区二区三区| 日韩精品在线看片z| 亚洲精品国产a| 成人高清视频在线| 2024国产精品| 奇米精品一区二区三区四区| 欧美性淫爽ww久久久久无| 中文字幕欧美区| 久久国产精品色| 91.com视频| 视频一区二区三区入口| 色综合天天性综合| 国产精品成人免费精品自在线观看| 极品销魂美女一区二区三区| 91精品一区二区三区久久久久久 | 亚洲色图制服诱惑| 色94色欧美sute亚洲13| 亚洲国产经典视频| 国产成人精品亚洲日本在线桃色| 欧美videos中文字幕| 九九视频精品免费| 欧美电影免费观看高清完整版在线 | 国产亚洲综合av| 激情文学综合网| 日韩欧美一级二级| 麻豆成人免费电影| 日韩欧美国产三级电影视频| 日本 国产 欧美色综合| 日韩三级视频在线观看| 日本最新不卡在线| 精品美女一区二区| 精品一区二区日韩| 久久精品亚洲精品国产欧美| 国产91在线观看| 国产精品国产三级国产aⅴ入口| 99在线精品观看| 亚洲国产一区二区在线播放| 欧美日韩不卡在线| 精品伊人久久久久7777人| 久久免费偷拍视频| 成人高清视频在线| 亚洲高清免费在线| 欧美精品123区| 国产一区二区毛片| 国产精品乱人伦| 欧美在线观看禁18| 日本女优在线视频一区二区| 欧美一区二区三区不卡| 国产成人自拍高清视频在线免费播放| 国产精品拍天天在线| 欧美最猛黑人xxxxx猛交| 奇米在线7777在线精品| 久久综合999| 色综合天天综合网天天看片 | 欧美α欧美αv大片| 成人久久视频在线观看| 亚洲午夜日本在线观看| 日韩欧美一卡二卡| 91女厕偷拍女厕偷拍高清| 婷婷综合五月天| 亚洲国产精品高清| 91麻豆精品国产91久久久使用方法| 国产资源精品在线观看| 亚洲免费av观看| www亚洲一区| 日本高清免费不卡视频| 国内精品国产成人国产三级粉色 | 欧美videos中文字幕| 91丨porny丨国产| 精品亚洲成a人| 亚洲人123区| 久久综合九色综合久久久精品综合| 91久久人澡人人添人人爽欧美| 激情欧美一区二区三区在线观看| 亚洲精品乱码久久久久久黑人| 久久婷婷成人综合色| 欧美日本一道本| av在线播放成人| 国产一区福利在线| 国产99精品在线观看| 九色综合狠狠综合久久| 亚洲一区二区三区免费视频| 中文字幕一区二区三区在线播放| 精品少妇一区二区三区在线播放| 欧美日韩亚洲国产综合| 91在线视频18| 成人一级片网址| 国产成+人+日韩+欧美+亚洲| 麻豆91精品视频| 人人超碰91尤物精品国产| 亚洲成年人影院| 一区二区在线观看免费 | 色女孩综合影院| 成人av在线观| 国产不卡视频一区二区三区| 久久99精品国产91久久来源| 麻豆91精品视频| 麻豆精品新av中文字幕| 日本亚洲免费观看| 毛片一区二区三区| 精品一区二区三区在线视频| 蜜桃av噜噜一区二区三区小说| 亚洲bt欧美bt精品| 秋霞国产午夜精品免费视频| 蜜桃视频在线观看一区| 麻豆成人av在线| 国产精品一二一区| 粉嫩嫩av羞羞动漫久久久| 成人午夜激情视频| 99久久久国产精品免费蜜臀| 91美女在线观看| 欧美亚洲国产一区二区三区 | 久色婷婷小香蕉久久| 美女视频免费一区| 国产成人99久久亚洲综合精品| 国产成人自拍网| 色综合天天综合网国产成人综合天| 91蝌蚪国产九色| 欧美系列一区二区| 欧美一级黄色大片| 久久精品视频一区二区| 亚洲人成在线观看一区二区| 一区二区三区四区不卡在线| 亚洲va在线va天堂| 国精品**一区二区三区在线蜜桃| 国产精品18久久久久久久久| 99久久精品国产一区二区三区| 欧美三级乱人伦电影| 日韩欧美电影一二三| 国产精品美女久久久久高潮| 亚洲一区二区三区四区在线| 久久疯狂做爰流白浆xx| 成人av在线电影| 日韩一区二区三区精品视频| 国产精品国产三级国产专播品爱网| 亚洲成a人在线观看| 国产成人鲁色资源国产91色综| 色琪琪一区二区三区亚洲区| 精品国产成人系列| 亚洲免费电影在线| 国内精品久久久久影院一蜜桃| 91福利在线观看| 国产欧美日韩精品在线| 午夜精品久久久久久久久久久| 国产成人在线视频播放| 欧美日本国产视频| 国产精品国模大尺度视频| 麻豆免费看一区二区三区| 色先锋资源久久综合|