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

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

?? dxutmisc.cpp

?? VC中使用C#作為腳本引擎編程
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
    m_EffectCache.Add( NewEntry );
    return S_OK;
}


//--------------------------------------------------------------------------------------
// Device event callbacks
//--------------------------------------------------------------------------------------


//--------------------------------------------------------------------------------------
HRESULT CDXUTResourceCache::OnCreateDevice( IDirect3DDevice9 *pd3dDevice )
{
    return S_OK;
}


//--------------------------------------------------------------------------------------
HRESULT CDXUTResourceCache::OnResetDevice( IDirect3DDevice9 *pd3dDevice )
{
    // Call OnResetDevice on all effect and font objects
    for( int i = 0; i < m_EffectCache.GetSize(); ++i )
        m_EffectCache[i].pEffect->OnResetDevice();
    for( int i = 0; i < m_FontCache.GetSize(); ++i )
        m_FontCache[i].pFont->OnResetDevice();


    return S_OK;
}


//--------------------------------------------------------------------------------------
HRESULT CDXUTResourceCache::OnLostDevice()
{
    // Call OnLostDevice on all effect and font objects
    for( int i = 0; i < m_EffectCache.GetSize(); ++i )
        m_EffectCache[i].pEffect->OnLostDevice();
    for( int i = 0; i < m_FontCache.GetSize(); ++i )
        m_FontCache[i].pFont->OnLostDevice();

    // Release all the default pool textures
    for( int i = m_TextureCache.GetSize() - 1; i >= 0; --i )
        if( m_TextureCache[i].Pool == D3DPOOL_DEFAULT )
        {
            SAFE_RELEASE( m_TextureCache[i].pTexture );
            m_TextureCache.Remove( i );  // Remove the entry
        }

    return S_OK;
}


//--------------------------------------------------------------------------------------
HRESULT CDXUTResourceCache::OnDestroyDevice()
{
    // Release all resources
    for( int i = m_EffectCache.GetSize() - 1; i >= 0; --i )
    {
        SAFE_RELEASE( m_EffectCache[i].pEffect );
        m_EffectCache.Remove( i );
    }
    for( int i = m_FontCache.GetSize() - 1; i >= 0; --i )
    {
        SAFE_RELEASE( m_FontCache[i].pFont );
        m_FontCache.Remove( i );
    }
    for( int i = m_TextureCache.GetSize() - 1; i >= 0; --i )
    {
        SAFE_RELEASE( m_TextureCache[i].pTexture );
        m_TextureCache.Remove( i );
    }

    return S_OK;
}


//--------------------------------------------------------------------------------------
CD3DArcBall::CD3DArcBall()
{
    Reset();
    m_vDownPt = D3DXVECTOR3(0,0,0);
    m_vCurrentPt = D3DXVECTOR3(0,0,0);
    m_Offset.x = m_Offset.y = 0;

    RECT rc;
    GetClientRect( GetForegroundWindow(), &rc );
    SetWindow( rc.right, rc.bottom );
}





//--------------------------------------------------------------------------------------
void CD3DArcBall::Reset()
{
    D3DXQuaternionIdentity( &m_qDown );
    D3DXQuaternionIdentity( &m_qNow );
    D3DXMatrixIdentity( &m_mRotation );
    D3DXMatrixIdentity( &m_mTranslation );
    D3DXMatrixIdentity( &m_mTranslationDelta );
    m_bDrag = FALSE;
    m_fRadiusTranslation = 1.0f;
    m_fRadius = 1.0f;
}




//--------------------------------------------------------------------------------------
D3DXVECTOR3 CD3DArcBall::ScreenToVector( float fScreenPtX, float fScreenPtY )
{
    // Scale to screen
    FLOAT x   = -(fScreenPtX - m_Offset.x - m_nWidth/2)  / (m_fRadius*m_nWidth/2);
    FLOAT y   =  (fScreenPtY - m_Offset.y - m_nHeight/2) / (m_fRadius*m_nHeight/2);

    FLOAT z   = 0.0f;
    FLOAT mag = x*x + y*y;

    if( mag > 1.0f )
    {
        FLOAT scale = 1.0f/sqrtf(mag);
        x *= scale;
        y *= scale;
    }
    else
        z = sqrtf( 1.0f - mag );

    // Return vector
    return D3DXVECTOR3( x, y, z );
}




//--------------------------------------------------------------------------------------
D3DXQUATERNION CD3DArcBall::QuatFromBallPoints(const D3DXVECTOR3 &vFrom, const D3DXVECTOR3 &vTo)
{
    D3DXVECTOR3 vPart;
    float fDot = D3DXVec3Dot(&vFrom, &vTo);
    D3DXVec3Cross(&vPart, &vFrom, &vTo);

    return D3DXQUATERNION(vPart.x, vPart.y, vPart.z, fDot);
}




//--------------------------------------------------------------------------------------
void CD3DArcBall::OnBegin( int nX, int nY )
{
    // Only enter the drag state if the click falls
    // inside the click rectangle.
    if( nX >= m_Offset.x &&
        nX < m_Offset.x + m_nWidth &&
        nY >= m_Offset.y &&
        nY < m_Offset.y + m_nHeight )
    {
        m_bDrag = true;
        m_qDown = m_qNow;
        m_vDownPt = ScreenToVector( (float)nX, (float)nY );
    }
}




//--------------------------------------------------------------------------------------
void CD3DArcBall::OnMove( int nX, int nY )
{
    if (m_bDrag) 
    { 
        m_vCurrentPt = ScreenToVector( (float)nX, (float)nY );
        m_qNow = m_qDown * QuatFromBallPoints( m_vDownPt, m_vCurrentPt );
    }
}




//--------------------------------------------------------------------------------------
void CD3DArcBall::OnEnd()
{
    m_bDrag = false;
}




//--------------------------------------------------------------------------------------
// Desc:
//--------------------------------------------------------------------------------------
LRESULT CD3DArcBall::HandleMessages( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
    // Current mouse position
    int iMouseX = (short)LOWORD(lParam);
    int iMouseY = (short)HIWORD(lParam);

    switch( uMsg )
    {
        case WM_LBUTTONDOWN:
        case WM_LBUTTONDBLCLK:
            SetCapture( hWnd );
            OnBegin( iMouseX, iMouseY );
            return TRUE;

        case WM_LBUTTONUP:
            ReleaseCapture();
            OnEnd();
            return TRUE;

        case WM_CAPTURECHANGED:
            if( (HWND)lParam != hWnd )
            {
                ReleaseCapture();
                OnEnd();
            }
            return TRUE;

        case WM_RBUTTONDOWN:
        case WM_RBUTTONDBLCLK:
        case WM_MBUTTONDOWN:
        case WM_MBUTTONDBLCLK:
            SetCapture( hWnd );
            // Store off the position of the cursor when the button is pressed
            m_ptLastMouse.x = iMouseX;
            m_ptLastMouse.y = iMouseY;
            return TRUE;

        case WM_RBUTTONUP:
        case WM_MBUTTONUP:
            ReleaseCapture();
            return TRUE;

        case WM_MOUSEMOVE:
            if( MK_LBUTTON&wParam )
            {
                OnMove( iMouseX, iMouseY );
            }
            else if( (MK_RBUTTON&wParam) || (MK_MBUTTON&wParam) )
            {
                // Normalize based on size of window and bounding sphere radius
                FLOAT fDeltaX = ( m_ptLastMouse.x-iMouseX ) * m_fRadiusTranslation / m_nWidth;
                FLOAT fDeltaY = ( m_ptLastMouse.y-iMouseY ) * m_fRadiusTranslation / m_nHeight;

                if( wParam & MK_RBUTTON )
                {
                    D3DXMatrixTranslation( &m_mTranslationDelta, -2*fDeltaX, 2*fDeltaY, 0.0f );
                    D3DXMatrixMultiply( &m_mTranslation, &m_mTranslation, &m_mTranslationDelta );
                }
                else  // wParam & MK_MBUTTON
                {
                    D3DXMatrixTranslation( &m_mTranslationDelta, 0.0f, 0.0f, 5*fDeltaY );
                    D3DXMatrixMultiply( &m_mTranslation, &m_mTranslation, &m_mTranslationDelta );
                }

                // Store mouse coordinate
                m_ptLastMouse.x = iMouseX;
                m_ptLastMouse.y = iMouseY;
            }
            return TRUE;
    }

    return FALSE;
}




//--------------------------------------------------------------------------------------
// Constructor
//--------------------------------------------------------------------------------------
CBaseCamera::CBaseCamera()
{
    m_cKeysDown = 0;
    ZeroMemory( m_aKeys, sizeof(BYTE)*CAM_MAX_KEYS );
    ZeroMemory( m_GamePad, sizeof(DXUT_GAMEPAD)*DXUT_MAX_CONTROLLERS );

    // Set attributes for the view matrix
    D3DXVECTOR3 vEyePt    = D3DXVECTOR3(0.0f,0.0f,0.0f);
    D3DXVECTOR3 vLookatPt = D3DXVECTOR3(0.0f,0.0f,1.0f);

    // Setup the view matrix
    SetViewParams( &vEyePt, &vLookatPt );

    // Setup the projection matrix
    SetProjParams( D3DX_PI/4, 1.0f, 1.0f, 1000.0f );

    GetCursorPos( &m_ptLastMousePosition );
    m_bMouseLButtonDown = false;
    m_bMouseMButtonDown = false;
    m_bMouseRButtonDown = false;
    m_nCurrentButtonMask = 0;
    m_nMouseWheelDelta = 0;

    m_fCameraYawAngle = 0.0f;
    m_fCameraPitchAngle = 0.0f;

    SetRect( &m_rcDrag, LONG_MIN, LONG_MIN, LONG_MAX, LONG_MAX );
    m_vVelocity     = D3DXVECTOR3(0,0,0);
    m_bMovementDrag = false;
    m_vVelocityDrag = D3DXVECTOR3(0,0,0);
    m_fDragTimer    = 0.0f;
    m_fTotalDragTimeToZero = 0.25;
    m_vRotVelocity = D3DXVECTOR2(0,0);

    m_fRotationScaler = 0.01f;           
    m_fMoveScaler = 5.0f;           

    m_bInvertPitch = false;
    m_bEnableYAxisMovement = true;
    m_bEnablePositionMovement = true;

    m_vMouseDelta   = D3DXVECTOR2(0,0);
    m_fFramesToSmoothMouseData = 2.0f;

    m_bClipToBoundary = false;
    m_vMinBoundary = D3DXVECTOR3(-1,-1,-1);
    m_vMaxBoundary = D3DXVECTOR3(1,1,1);
}


//--------------------------------------------------------------------------------------
// Client can call this to change the position and direction of camera
//--------------------------------------------------------------------------------------
VOID CBaseCamera::SetViewParams( D3DXVECTOR3* pvEyePt, D3DXVECTOR3* pvLookatPt )
{
    if( NULL == pvEyePt || NULL == pvLookatPt )
        return;

    m_vDefaultEye = m_vEye = *pvEyePt;
    m_vDefaultLookAt = m_vLookAt = *pvLookatPt;

    // Calc the view matrix
    D3DXVECTOR3 vUp(0,1,0);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本大道久久a久久精品综合| 日韩视频免费观看高清完整版| 欧美午夜精品理论片a级按摩| 日韩欧美中文字幕制服| 亚洲欧美在线高清| 麻豆91精品视频| 在线观看日韩av先锋影音电影院| 久久你懂得1024| 免费观看日韩电影| 在线一区二区视频| 国产精品私人自拍| 国产成人免费视频精品含羞草妖精| 欧美色图天堂网| 中文字幕在线不卡| 成人午夜av在线| 久久亚洲捆绑美女| 美女高潮久久久| 欧美老女人在线| 亚洲男人的天堂在线aⅴ视频| 国产传媒一区在线| 亚洲精品一区二区三区影院| 日产国产欧美视频一区精品| 欧美日韩国产系列| 亚洲一区免费在线观看| 日本高清视频一区二区| 亚洲色图第一区| 99久久精品一区| 亚洲天堂中文字幕| 9人人澡人人爽人人精品| 国产三级一区二区三区| 国产精品99久久久久久久女警 | 欧美精品777| 亚洲精品国产高清久久伦理二区| av资源站一区| 亚洲视频一二三区| 欧美亚洲丝袜传媒另类| 亚洲综合激情另类小说区| 91福利在线免费观看| 一区二区三区视频在线看| 欧美自拍偷拍午夜视频| 亚洲成人第一页| 制服丝袜一区二区三区| 久久精品72免费观看| 亚洲精品一区二区三区99| 国产精品一区三区| 中文字幕中文字幕在线一区| 99精品视频一区二区三区| 一区二区久久久| 91精品国产乱码久久蜜臀| 另类成人小视频在线| 国产欧美日韩综合精品一区二区 | 99re亚洲国产精品| 玉米视频成人免费看| 欧美挠脚心视频网站| 免费成人av在线播放| 国产欧美一区二区精品忘忧草| eeuss鲁片一区二区三区 | 色婷婷久久一区二区三区麻豆| 亚洲一区二区高清| 日韩一区二区三区视频在线| 国产精品77777| 一区二区三区久久| 精品日韩一区二区三区免费视频| 国产成人免费视频网站| 亚洲bt欧美bt精品777| 2024国产精品| 色综合激情五月| 久久草av在线| 亚洲精品国产成人久久av盗摄 | 97久久精品人人爽人人爽蜜臀| 亚洲国产日韩av| 国产网站一区二区三区| 欧美亚洲国产一区在线观看网站| 精品在线视频一区| 亚洲一区二区在线观看视频| 精品国产三级电影在线观看| 91美女福利视频| 国产一区二区三区久久久 | 国产精品久久三| 91麻豆精品91久久久久同性| 成人aa视频在线观看| 日本视频一区二区三区| 亚洲欧美一区二区三区国产精品| 欧美成人伊人久久综合网| 在线亚洲高清视频| 丰满少妇久久久久久久| 免费观看在线综合| 亚洲精品一卡二卡| 中文字幕va一区二区三区| 日韩一区二区三区在线观看| 欧美体内she精高潮| 成人在线视频一区二区| 麻豆精品视频在线观看| 亚洲成人免费看| 亚洲免费av高清| 中文字幕欧美三区| 欧美精品一区二区久久婷婷| 欧美精品v国产精品v日韩精品| 色综合天天综合给合国产| 国产精品一区二区黑丝| 玖玖九九国产精品| 视频一区二区中文字幕| 亚洲成年人影院| 亚洲自拍偷拍麻豆| 亚洲免费在线观看| 中日韩免费视频中文字幕| 久久久久久电影| 2020国产精品自拍| 日韩欧美你懂的| 日韩免费福利电影在线观看| 日韩一区二区在线观看视频播放| 欧美日韩一区二区在线观看视频| 色综合天天综合网国产成人综合天| 成人免费毛片高清视频| 大尺度一区二区| 福利91精品一区二区三区| 粉嫩一区二区三区在线看| 国产成人精品午夜视频免费 | 欧美电影免费观看高清完整版在线| 久久色成人在线| 老司机精品视频线观看86| 欧美精品在线一区二区| 欧美丝袜丝nylons| 欧美日韩和欧美的一区二区| 欧美亚洲高清一区| 欧美精品一二三四| 91精品国产综合久久香蕉的特点 | 亚洲视频免费在线观看| 全国精品久久少妇| 成人中文字幕电影| 日韩丝袜美女视频| 亚洲精品国产视频| 国产精品系列在线观看| 欧美一区二区视频网站| 亚洲视频资源在线| 久久不见久久见免费视频7| 在线观看91精品国产入口| 久久久91精品国产一区二区精品| 一区二区三区成人| 成人国产视频在线观看| 欧美xxxxx牲另类人与| 夜夜嗨av一区二区三区网页 | 国产天堂亚洲国产碰碰| 午夜欧美视频在线观看| av在线不卡观看免费观看| 精品国产乱码久久久久久蜜臀| 五月天国产精品| 欧美色网一区二区| 亚洲人成影院在线观看| 成人精品鲁一区一区二区| 亚洲精品一区在线观看| 久久精品噜噜噜成人av农村| 91精品婷婷国产综合久久性色| 亚洲欧美视频一区| 99久久er热在这里只有精品15| 日本一区二区三区免费乱视频| 激情偷乱视频一区二区三区| 91精品国产综合久久福利软件| 亚洲成人一区二区在线观看| 欧美三级韩国三级日本一级| 一区二区三区日本| 色www精品视频在线观看| 亚洲色图欧美偷拍| 91一区在线观看| 亚洲丝袜精品丝袜在线| 色综合一个色综合亚洲| 亚洲美女视频一区| 在线看不卡av| 亚洲成人av一区二区| 欧美日韩激情一区二区三区| 亚洲成av人片一区二区| 91麻豆精品国产91久久久资源速度| 亚洲第一搞黄网站| 在线电影欧美成精品| 美洲天堂一区二卡三卡四卡视频| 91精品视频网| 国产做a爰片久久毛片| 精品国产乱码久久久久久影片| 国产一区二区三区精品欧美日韩一区二区三区 | 日本高清不卡aⅴ免费网站| 亚洲精品乱码久久久久久日本蜜臀| 色综合久久久久综合99| 亚洲成av人在线观看| 日韩一二三区不卡| 国产精品一级二级三级| 国产精品你懂的在线| 一本一本久久a久久精品综合麻豆| 亚洲夂夂婷婷色拍ww47| 91麻豆精品国产91久久久资源速度 | 欧美三级在线看| 久久99久国产精品黄毛片色诱| 26uuu色噜噜精品一区| 成人国产精品免费观看动漫 | 精品91自产拍在线观看一区| 成人性生交大片免费看视频在线| ㊣最新国产の精品bt伙计久久| 欧美日韩不卡在线| 国内精品视频666| 亚洲欧美偷拍三级| 日韩你懂的在线观看|