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

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

?? 1steps.cpp

?? Beginning Direct3D Game Programming源代碼Part1chapter6
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

    D3DXMATRIX matTemp, matRotateX, matRotateY, matRotateZ;
    D3DXMatrixRotationY( &matRotateY, -m_pObjects[0].vR.x );
	D3DXMatrixRotationX( &matRotateX, -m_pObjects[0].vR.y );
	D3DXMatrixRotationZ( &matRotateZ, -m_pObjects[0].vR.z );

	D3DXMatrixMultiply( &matTemp, &matRotateX, &matRotateY );
	D3DXMatrixMultiply( &matTemp, &matRotateZ, &matTemp );
	D3DXMatrixMultiply( &matWorld, &matTemp, &matWorld ); 

    m_pObjects[0].matLocal = matWorld;

	//**********************************************************
	// red object
	//**********************************************************
    if (m_bKey['D'])	m_pObjects[1].vR.z -= m_fTimeElapsed;
    if (m_bKey['A'])	m_pObjects[1].vR.z += m_fTimeElapsed;
	if (m_bKey['S'])	m_pObjects[1].vR.y -= m_fTimeElapsed;
    if (m_bKey['W'])	m_pObjects[1].vR.y += m_fTimeElapsed;

	D3DXMatrixTranslation(&matWorld, m_pObjects[1].vLoc.x, m_pObjects[0].vLoc.y, m_pObjects[0].vLoc.z);
    
	D3DXMatrixRotationY( &matRotateY, -m_pObjects[1].vR.x );
	D3DXMatrixRotationX( &matRotateX, -m_pObjects[1].vR.y );
	D3DXMatrixRotationZ( &matRotateZ, -m_pObjects[1].vR.z );
	D3DXMatrixMultiply( &matTemp, &matRotateX, &matRotateY );
	D3DXMatrixMultiply( &matTemp, &matRotateZ, &matTemp );
	D3DXMatrixMultiply( &matWorld, &matTemp, &matWorld ); 

    m_pObjects[1].matLocal = matWorld;

	//************************************************************
	// camera stuff
	//************************************************************
    D3DXVECTOR3 vTrans(0.0f, 0.0f, 0.0f);
    D3DXVECTOR3 vRot(0.0f, 0.0f, 0.0f);

	// Process keyboard input
    if (m_bKey[VK_HOME])		vTrans.z += 0.2f; // Move Forward
    if (m_bKey[VK_END])			vTrans.z -= 0.2f; // Move Backward
    if (m_bKey[VK_NUMPAD4])		vTrans.x -= 0.1f; // Slide Left
    if (m_bKey[VK_NUMPAD6])		vTrans.x += 0.1f; // Slide Right
    if (m_bKey[VK_NUMPAD8])     vTrans.y += 0.1f; // Slide Down
    if (m_bKey[VK_NUMPAD2])     vTrans.y -= 0.1f; // Slide Up

	if (m_bKey[VK_UP])			vRot.y += 0.1f; // Pitch Up
    if (m_bKey[VK_DOWN])		vRot.y -= 0.1f; // Pitch Down
    if (m_bKey[VK_LEFT])	    vRot.x += 0.1f; // Turn Left
    if (m_bKey[VK_RIGHT])	    vRot.x -= 0.1f; // Turn Right
    if (m_bKey['C'])		    vRot.z += 0.1f; // Rotate Left
    if (m_bKey['X'])		    vRot.z -= 0.1f; // Rotate Right
	
	// turn cfSmooth to 0.98f
	const FLOAT cfSmooth = 0.9f;

	// transform and rotation velocity
    m_pvVelocity = m_pvVelocity * cfSmooth + vTrans;
    m_pvAngularVelocity = m_pvAngularVelocity * cfSmooth + vRot;

	// transform and rotation value
    vTrans = m_pvVelocity * m_fTimeElapsed * m_fSpeed;
    vRot = m_pvAngularVelocity* m_fTimeElapsed * m_fAngularSpeed;

    // Update position and view matricies
    D3DXMATRIX matT, matR;
    D3DXQUATERNION qR;

	D3DXMatrixTranslation (&matT, vTrans.x, vTrans.y, vTrans.z);		// step 1
	D3DXMatrixMultiply (&m_matPosition, &matT, &m_matPosition);
	D3DXQuaternionRotationYawPitchRoll (&qR, vRot.x, vRot.y, vRot.z);	// step 2
	D3DXMatrixRotationQuaternion (&matR, &qR);							// step 3
	D3DXMatrixMultiply (&m_matPosition, &matR, &m_matPosition);			// step 4
	D3DXMatrixInverse (&m_matView, NULL, &m_matPosition);				// step 5

	m_pd3dDevice->SetTransform(D3DTS_VIEW, &m_matView );

   return S_OK;
}

//-----------------------------------------------------------------------------
// Name: Render()
// Desc: Called once per frame, the call is the entry point for 3d
//       rendering. This function sets up render states, clears the
//       viewport, and renders the scene.
//-----------------------------------------------------------------------------
HRESULT CMyD3DApplication::Render()
{
    D3DMATERIAL8 mtrl;

    // Clear the viewport | z-buffer
    m_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,
                         0x00000000, 1.0f, 0L );

    // Begin the scene
    if( SUCCEEDED( m_pd3dDevice->BeginScene() ) )
    {
		// yellow object
		// Set the color for the object
		D3DUtil_InitMaterial( mtrl, m_pObjects[0].fR, m_pObjects[0].fG, m_pObjects[0].fB );
		m_pd3dDevice->SetMaterial( &mtrl );

        // Apply the object's local matrix
        m_pd3dDevice->SetTransform(D3DTS_WORLD, &m_pObjects[0].matLocal );

		m_pd3dDevice->SetStreamSource( 0, m_pVB, sizeof(CUSTOMVERTEX) );
		m_pd3dDevice->SetVertexShader( D3DFVF_CUSTOMVERTEX );
        m_pd3dDevice->SetIndices( m_pIB, 0 );
		m_pd3dDevice->DrawIndexedPrimitive( D3DPT_TRIANGLELIST, 
											0, 
											16,  // number of vertices
                                            0, 
											10); // number of primitives

		// red object
		// Set the color for the object
		D3DUtil_InitMaterial( mtrl, m_pObjects[1].fR, m_pObjects[1].fG, m_pObjects[1].fB );
		m_pd3dDevice->SetMaterial( &mtrl );

        // Apply the object's local matrix
        m_pd3dDevice->SetTransform(D3DTS_WORLD, &m_pObjects[1].matLocal );

		m_pd3dDevice->SetStreamSource( 0, m_pVB, sizeof(CUSTOMVERTEX) );
		m_pd3dDevice->SetVertexShader( D3DFVF_CUSTOMVERTEX );
        m_pd3dDevice->SetIndices( m_pIB, 0 );
		m_pd3dDevice->DrawIndexedPrimitive( D3DPT_TRIANGLELIST, 
											0, 
											16,  // number of vertices
                                            0, 
											10); // number of primitives

        // Output statistics
        m_pFont->DrawText( 2,  0, D3DCOLOR_ARGB(255,255,255,0), m_strFrameStats );
        m_pFont->DrawText( 2, 20, D3DCOLOR_ARGB(255,255,255,0), m_strDeviceStats );

      // End the scene.
      m_pd3dDevice->EndScene();
    }
   return S_OK;
}

//-----------------------------------------------------------------------------
// Name: InitDeviceObjects()
// Desc: Initialize scene objects.
//-----------------------------------------------------------------------------
HRESULT CMyD3DApplication::InitDeviceObjects()
{
    m_pFont->InitDeviceObjects( m_pd3dDevice );
   return S_OK;
}

//-----------------------------------------------------------------------------
// Name: RestoreDeviceObjects()
// Desc: Initialize scene objects.
//-----------------------------------------------------------------------------
HRESULT CMyD3DApplication::RestoreDeviceObjects()
{
    m_pFont->RestoreDeviceObjects();

    D3DMATERIAL8 mtrl;
    D3DUtil_InitMaterial( mtrl, 1.0f, 1.0f, 1.0f );
    m_pd3dDevice->SetMaterial( &mtrl );

    // Set the transform matrices
    D3DXMatrixTranslation(&m_matView, 0.0f, 0.0f, -20.0f);
    D3DXMatrixTranslation(&m_matPosition, 0.0f, 0.0f, -5.0f);

	// Set the projection matrix
    D3DXMATRIX  matProj;
    FLOAT fAspect = m_d3dsdBackBuffer.Width / (FLOAT)m_d3dsdBackBuffer.Height;
    D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, fAspect, 1.0f, 500.0f );
    m_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );

    // Set up the lights
    if( m_d3dCaps.VertexProcessingCaps & D3DVTXPCAPS_DIRECTIONALLIGHTS )
    {
        D3DLIGHT8 light;
        D3DUtil_InitLight( light, D3DLIGHT_DIRECTIONAL, 0.5f, -1.0f, 5.0f );
        light.Ambient.r = 0.1f;
        light.Ambient.g = 0.1f;
        light.Ambient.b = 0.1f;
        m_pd3dDevice->SetLight( 0, &light );
        m_pd3dDevice->LightEnable( 0, TRUE );

        D3DUtil_InitLight( light, D3DLIGHT_DIRECTIONAL, 0.5f,  1.0f, -10.0f );
        light.Ambient.r = 0.2f;
        light.Ambient.g = 0.2f;
        light.Ambient.b = 0.2f;
        m_pd3dDevice->SetLight( 1, &light );
        m_pd3dDevice->LightEnable( 1, TRUE );
        m_pd3dDevice->SetRenderState( D3DRS_LIGHTING, TRUE );
     }
	else
	{
	    m_pd3dDevice->SetRenderState( D3DRS_AMBIENT, 0x0c0c0c0c);
	}

	// fill the vertex buffer
	m_dwSizeofVertices = sizeof(m_pvObjectVertices);

    // Create the vertex buffer
    if( FAILED( m_pd3dDevice->CreateVertexBuffer( m_dwSizeofVertices,
                                                  0, D3DFVF_CUSTOMVERTEX,
                                                  D3DPOOL_MANAGED, &m_pVB ) ) )
        return E_FAIL;

    VOID* pVertices;
    if( FAILED( m_pVB->Lock( 0, m_dwSizeofVertices, (BYTE**)&pVertices, 0 ) ) )
        return E_FAIL;
    memcpy( pVertices, m_pvObjectVertices, m_dwSizeofVertices);
    m_pVB->Unlock();

	// fill the Index buffer
	m_dwSizeofIndices = sizeof(m_pwObjectIndices);

	// Create the index buffer
	if( FAILED( m_pd3dDevice->CreateIndexBuffer( m_dwSizeofIndices,
	                                             0, D3DFMT_INDEX16,
		                                         D3DPOOL_MANAGED, &m_pIB ) ) )
		return E_FAIL;

	VOID* pIndices;
	if( FAILED( m_pIB->Lock( 0, m_dwSizeofIndices, (BYTE**)&pIndices, 0 ) ) )
	   return E_FAIL;
	memcpy( pIndices, m_pwObjectIndices, m_dwSizeofIndices );
	m_pIB->Unlock();

  return S_OK;
}

//-----------------------------------------------------------------------------
// Name: InvalidateDeviceObjects()
// Desc: Called when the app is exiting, or the device is being changed,
//       this function deletes any device dependent objects.
//-----------------------------------------------------------------------------
HRESULT CMyD3DApplication::InvalidateDeviceObjects()
{
    m_pFont->InvalidateDeviceObjects();
    SAFE_RELEASE( m_pVB );
    SAFE_RELEASE( m_pIB );
   return S_OK;
}

//-----------------------------------------------------------------------------
// Name: DeleteDeviceObjects()
// Desc: Called when the app is exiting, or the device is being changed,
//       this function deletes any device dependent objects.
//-----------------------------------------------------------------------------
HRESULT CMyD3DApplication::DeleteDeviceObjects()
{
    m_pFont->DeleteDeviceObjects();
   return S_OK;
}


//-----------------------------------------------------------------------------
// Name: FinalCleanup()
// Desc: Called before the app exits, this function gives the app the chance
//       to cleanup after itself.
//-----------------------------------------------------------------------------
HRESULT CMyD3DApplication::FinalCleanup()
{
   return S_OK;
}

//-----------------------------------------------------------------------------
// Name: ConfirmDevice()
// Desc: Called during device intialization, this code checks the device
//       for some minimum set of capabilities
//-----------------------------------------------------------------------------
HRESULT CMyD3DApplication::ConfirmDevice( D3DCAPS8* pCaps, DWORD dwBehavior, 
                                          D3DFORMAT Format )
{
    return S_OK;
}


//-----------------------------------------------------------------------------
// Name: MsgProc()
// Desc: Message proc function to handle key and menu input
//-----------------------------------------------------------------------------
LRESULT CMyD3DApplication::MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam,
                                    LPARAM lParam )
{
    // Record key presses
    if( WM_KEYDOWN == uMsg )
    {
        m_bKey[wParam] = 1;
    }

    // Perform commands when keys are rleased
    if( WM_KEYUP == uMsg )
    {
        m_bKey[wParam] = 0;
    }

    return CD3DApplication::MsgProc( hWnd, uMsg, wParam, lParam );
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av一区二| 久久久影视传媒| av在线播放成人| 国产传媒欧美日韩成人| 国产精品小仙女| 国v精品久久久网| 成人av午夜影院| 91丝袜国产在线播放| 99国产欧美久久久精品| 91麻豆国产福利在线观看| 99久久精品免费看国产| 91麻豆福利精品推荐| 91国产成人在线| 欧美视频一区二区三区在线观看| 在线视频你懂得一区| 欧美男男青年gay1069videost| 欧美日韩国产一级片| 欧美一区二区三区啪啪| 欧美精品一区二区在线播放| 国产日韩精品一区二区三区| 自拍视频在线观看一区二区| 亚洲影视在线观看| 久久精品久久久精品美女| 狠狠色丁香婷婷综合| www.欧美亚洲| 欧美日韩中文字幕一区| 精品国产不卡一区二区三区| 中文字幕的久久| 亚洲成人av福利| 国产精品资源在线看| 91偷拍与自偷拍精品| 91麻豆精品国产91久久久久久久久| 日韩午夜三级在线| 中文字幕一区二区三| 偷拍与自拍一区| 国产福利精品一区| 在线观看欧美精品| 久久先锋影音av鲁色资源网| 亚洲天堂网中文字| 麻豆国产精品一区二区三区 | 欧美日韩在线精品一区二区三区激情| 欧美视频日韩视频在线观看| 欧美一级生活片| 亚洲另类在线视频| 国内成人免费视频| 欧美视频一区二区在线观看| 日本一区二区三区视频视频| 日本欧美肥老太交大片| 91一区二区在线观看| 精品国产乱码久久久久久夜甘婷婷 | 欧美日韩小视频| 国产精品污网站| 日韩在线观看一区二区| 91免费观看视频| 久久精品欧美日韩精品| 日本不卡一区二区三区高清视频| 99久久综合精品| 欧美精品一区二区在线观看| 日本欧美在线看| 欧美日韩一本到| 一区二区欧美精品| 99热在这里有精品免费| 久久精品视频网| 琪琪一区二区三区| 制服丝袜在线91| 亚洲国产视频一区| 色综合久久天天| 亚洲国产精品成人综合| 国产最新精品免费| 精品国产百合女同互慰| 久久精品国产久精国产爱| 3atv一区二区三区| 日韩福利电影在线观看| 一本久久a久久精品亚洲| 国产精品进线69影院| 成人夜色视频网站在线观看| 久久久久久9999| 国产成人精品影院| 中文在线资源观看网站视频免费不卡| 国产资源在线一区| 国产欧美一区二区在线| 国产成人亚洲精品青草天美| 久久先锋影音av| 国模少妇一区二区三区| 精品99久久久久久| 大美女一区二区三区| 国产精品久久毛片a| 91免费看片在线观看| 亚洲激情av在线| 欧美日韩高清一区二区| 日韩av一区二区在线影视| 欧美一卡在线观看| 国产精品一二三区在线| 国产色产综合产在线视频| 99这里只有久久精品视频| 亚洲美女少妇撒尿| 欧美日韩成人综合天天影院| 日本午夜一本久久久综合| 日韩美女主播在线视频一区二区三区| 精品一区二区在线播放| 中文字幕精品一区二区精品绿巨人| 不卡av在线网| 视频一区国产视频| 久久亚洲欧美国产精品乐播 | 欧美视频在线一区二区三区| 欧美96一区二区免费视频| 欧美国产日韩一二三区| 欧洲在线/亚洲| 极品美女销魂一区二区三区 | 亚洲综合小说图片| 日韩片之四级片| 一本到高清视频免费精品| 老司机精品视频线观看86| 国产精品动漫网站| 欧美精选一区二区| www.66久久| 美女视频黄 久久| 亚洲欧美一区二区三区久本道91| 91精品国产免费久久综合| 成人免费看黄yyy456| 天天色综合天天| 综合久久国产九一剧情麻豆| 日韩欧美一二三区| 色婷婷av一区二区三区大白胸| 老汉av免费一区二区三区| 亚洲欧美色图小说| 久久久久久亚洲综合影院红桃 | 久久av资源网| 亚洲欧洲日产国产综合网| 日韩免费在线观看| 欧美日韩精品一区二区三区四区 | 韩国v欧美v日本v亚洲v| 亚洲一区二区av电影| 国产精品网站一区| 久久这里只有精品6| 欧美高清视频一二三区| 91色综合久久久久婷婷| 日日噜噜夜夜狠狠视频欧美人| 日韩美女视频19| 欧美xingq一区二区| 欧美日韩一级视频| 91性感美女视频| a亚洲天堂av| 国产99久久久国产精品潘金| 激情丁香综合五月| 久久精品噜噜噜成人av农村| 日韩国产成人精品| 婷婷综合久久一区二区三区| 亚洲精品国久久99热| 亚洲欧洲日产国码二区| 国产精品对白交换视频| 国产精品福利一区二区三区| 欧美高清在线视频| 中文一区二区在线观看| 国产视频一区在线观看| 国产欧美日韩精品在线| 日本一区二区三区久久久久久久久不| 精品91自产拍在线观看一区| 精品国产一区二区在线观看| 日韩三级免费观看| 欧美精品一区二区在线观看| 色www精品视频在线观看| 在线免费一区三区| 欧美日韩国产首页在线观看| 3d动漫精品啪啪1区2区免费 | 成人av在线资源| 99久久综合色| 欧美性生活一区| 欧美一卡2卡3卡4卡| 欧美zozo另类异族| 国产日韩精品一区二区三区| 中文字幕一区二区三| 亚洲国产精品久久久久婷婷884| 午夜精品一区二区三区电影天堂| 日韩精品视频网| 国产成人免费视频网站高清观看视频 | 一区二区三区成人| 日韩精品一级中文字幕精品视频免费观看 | 亚洲欧洲av在线| 亚洲午夜私人影院| 九九国产精品视频| 92精品国产成人观看免费| 精品视频一区三区九区| 欧美变态凌虐bdsm| 成人免费一区二区三区在线观看| 亚洲影院理伦片| 国产一区二区三区不卡在线观看 | 欧美一区二区性放荡片| 国产亚洲成av人在线观看导航| 国产精品免费视频网站| 午夜视频在线观看一区| 国产一区二区剧情av在线| 9i看片成人免费高清| 日韩一卡二卡三卡| 国产精品欧美极品| 麻豆精品一区二区av白丝在线| 成人开心网精品视频| 91精品国产免费久久综合| 亚洲天堂a在线| 国产在线日韩欧美|