锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美尤物一区,国产精品一区二区三区久久,日韩亚洲在线观看http://m.shnenglu.com/xingkongyun/category/7602.html鏄熺┖闄ㄧ殑紼嬪簭灝忕珯zh-cnSat, 19 Jul 2008 10:38:36 GMTSat, 19 Jul 2008 10:38:36 GMT60directx涓涪澶辯殑璁懼(lost device)http://m.shnenglu.com/xingkongyun/articles/56484.html鏉ㄥ漿褰?/dc:creator>鏉ㄥ漿褰?/author>Fri, 18 Jul 2008 02:27:00 GMThttp://m.shnenglu.com/xingkongyun/articles/56484.htmlhttp://m.shnenglu.com/xingkongyun/comments/56484.htmlhttp://m.shnenglu.com/xingkongyun/articles/56484.html#Feedback0http://m.shnenglu.com/xingkongyun/comments/commentRss/56484.htmlhttp://m.shnenglu.com/xingkongyun/services/trackbacks/56484.htmldirectx涓涪澶辯殑璁懼(lost device)
2008-05-10 23:02

涓㈠け鐨勮澶?br>
涓涓狹icrosoft? Direct3D?鍙互澶勪簬鎿嶄綔鐘舵佹垨涓㈠け鐘舵併傛搷浣滅姸鎬佹槸璁懼鐨勬甯哥姸鎬侊紝璁懼鎸夐鏈熻繍琛屽茍present鎵鏈夋覆鏌撶粨鏋溿傚綋浜嬩歡鍙戠敓鏃訛紝濡傚叏灞忓簲鐢ㄧ▼搴忓け鍘婚敭鐩樿緭鍏ョ劍鐐癸紝璁懼灝辮漿鍙樺埌涓㈠け鐘舵侊紝榪欎細瀵艱嚧娓叉煋鏃犳硶榪涜銆備涪澶辯姸鎬佽〃鐜頒負鎵鏈夋覆鏌撴搷浣滅殑鎮勭劧澶辮觸錛岃繖鎰忓懗鐫鍗充嬌娓叉煋鎿嶄綔澶辮觸鎵鏈夌殑娓叉煋鏂規硶浠嶅彲浠ヨ繑鍥炴垚鍔熺爜銆傚湪榪欑鎯呭喌涓嬶紝IDirect3DDevice9:
resent榪斿洖閿欒鐮丏3DERR_DEVICELOST銆?br>
Direct3D鏈夋剰娌℃湁瀵瑰彲鑳藉鑷磋澶囦涪澶辯殑鎵鏈夋儏鍐佃繘琛岃緇嗚鏄庛備竴浜涘吀鍨嬬殑渚嬪瓙鍖呮嫭紿楀彛澶卞幓鐒︾偣錛屼緥濡傜敤鎴鋒寜涓嬩簡ALT+TAB鎴栧脊鍑轟簡涓涓郴緇熷璇濇銆傝澶囦篃浼氬洜涓虹數婧愮鐞嗕簨浠惰屼涪澶憋紝鎴栬呭彟涓涓簲鐢ㄧ▼搴忚繘琛屽叏灞忔搷浣溿傚彟澶栵紝浠諱綍瀵笽Direct3DDevice9::Reset璋冪敤鐨勫け璐ヤ細鎶婅澶囩疆涓轟涪澶辯姸鎬併?br>
娉ㄦ剰    鍙互淇濊瘉鎵鏈夌戶鎵胯嚜IUnknown鐨勬柟娉曞湪璁懼涓㈠け鍚庝粛鑳芥甯稿伐浣溿傝澶囦涪澶卞悗錛屾瘡涓嚱鏁頒竴鑸湁涓夌鍙兘錛?br>
璋冪敤澶辮觸錛岃繑鍥炲間負D3DERR_DEVICELOST – 榪欐剰鍛崇潃搴旂敤紼嬪簭蹇呴』鍙戠幇璁懼宸茬粡涓㈠け錛屼粠鑰岀煡閬撲竴浜涗簨鎯呮病鏈夋寜鐓ч鏈熻繘琛屻?
鎮勭劧澶辮觸錛岃繑鍥炲間負S_OK鎴栧叾瀹冨?– 鑻ュ嚱鏁拌皟鐢ㄦ倓鐒跺け璐ワ紝鍒欏簲鐢ㄧ▼搴忎竴鑸棤娉曞尯鍒嗗嚭“璋冪敤鎴愬姛”鎴?#8220;鎮勭劧澶辮觸”銆?
鍑芥暟榪斿洖涓涓繑鍥炲箋?
瀵逛涪澶辯殑璁懼浣滃嚭鍝嶅簲

璁懼鍦ㄨ閲嶇疆鍚庯紝搴旇閲嶆柊鍒涘緩璧勬簮錛堝寘鎷樉瀛樿祫婧愶級銆傚鏋滆澶囦涪澶變簡錛岄偅涔堝簲鐢ㄧ▼搴忓簲璇ユ煡璇㈣澶囩姸鎬侊紝鐪嬫槸鍚﹀彲浠ュ皢涔嬫仮澶嶅洖鎿嶄綔鐘舵併傚鏋滀笉琛岋紝閭d箞灝辯瓑鍒拌澶囧彲浠ヨ鎭㈠涓烘銆?br>
濡傛灉璁懼鍙互琚仮澶嶏紝閭d箞搴旂敤紼嬪簭搴旇閿姣佹墍鏈夋樉瀛樿祫婧愬拰浜ゆ崲閾撅紝騫跺噯澶囨仮澶嶃傜劧鍚庯紝搴旂敤紼嬪簭璋冪敤IDirect3DDevice9::Reset鏂規硶銆俁eset鏂規硶鏄綋璁懼涓㈠け鏃跺敮涓鏈夋晥鐨勬柟娉曪紝騫朵笖鏄簲鐢ㄧ▼搴忓彲鐢ㄦ潵鎶婅澶囦粠涓㈠け鐘舵佹仮澶嶅埌鎿嶄綔鐘舵佺殑鍞竴鏂規硶銆傞櫎闈炲簲鐢ㄧ▼搴忛噴鏀炬墍鏈夊湪D3DPOOL_DEFAULT涓垎閰嶇殑璧勬簮錛屽寘鎷敤IDirect3DDevice9::CreateRenderTarget鍜孖Direct3DDevice9::CreateDepthSstencilSurface鏂規硶鍒涘緩鐨勮祫婧愶紝鍚﹀垯Reset灝嗕細澶辮觸銆?br>
Direct3D涓ぇ閮ㄥ垎琚綣佽皟鐢ㄧ殑鏂規硶涓嶈繑鍥炰換浣曞叧浜庤澶囨槸鍚﹀凡涓㈠け鐨勪俊鎭傚簲鐢ㄧ▼搴忓彲浠ョ戶緇皟鐢ㄦ覆鏌撴柟娉曪紝濡侷Direct3DDevice9:
rawPrimitive錛岃屼笉浼氭敹鍒拌澶囦涪澶辯殑閫氱煡銆傚湪Direct3D鍐呴儴錛岃繖浜涙搷浣滆鎶涘純錛岀洿鍒拌澶囪閲嶇疆涓烘搷浣滅姸鎬佷負姝€?br>
閫氳繃鏌ヨIDirect3DDevice9::TestCooperativeLevel鏂規硶鐨勮繑鍥炲鹼紝搴旂敤紼嬪簭鍙互鍐沖畾鍦ㄩ亣鍒拌澶囦涪澶辨椂濡備綍澶勭悊銆?br>
綆$悊璧勬簮


璧勬簮綆$悊鏄皢璧勬簮浠庣郴緇熷唴瀛樻彁鍗囧埌璁懼鍙闂瓨鍌ㄥ櫒鍙婁粠璁懼鍙闂瓨鍌ㄥ櫒涓姏寮冪殑榪囩▼銆侻icrosoft? Direct3D?榪愯搴撴湁鑷繁鐨勫熀浜庢渶榪戞渶灝戜嬌鐢紙least-recently-used錛変紭鍏堢駭鎶鏈殑綆$悊綆楁硶銆傚綋Direct3D媯嫻嬪埌鍦ㄤ竴甯т腑鈥斺斿湪IDirect3DDevice9::BeginScene鍜孖Direct3DDevice9::EndScene璋冪敤涔嬮棿鈥斺旇澶囧彲璁塊棶鍐呭瓨鏃犳硶鍚屾椂瀛樺偍鎵鏈夎祫婧愭椂錛屽畠灝卞垏鎹㈠埌鏈榪戞渶澶氫嬌鐢紙most-recently-used錛変紭鍏堢駭鎶鏈?br>
鍦ㄥ垱寤烘椂浣跨敤D3DPOOL_MANAGED鏍囧織鎸囧畾涓涓敱緋葷粺綆$悊鐨勮祫婧愩傜敱緋葷粺綆$悊鐨勮祫婧愬湪璁懼鐨勪涪澶辯姸鎬佸拰鎿嶄綔鐘舵侀棿鐨勮漿鎹腑鎸佺畫瀛樺湪銆傞氳繃璋冪敤IDirect3DDevice9::Reset璁懼鍙互琚噸緗紝騫朵笖榪欑被璧勬簮鍙互緇х畫姝e父榪愪綔鑰屾棤闇閲嶆柊杞藉叆鍥劇墖銆備絾鏄紝濡傛灉璁懼蹇呴』琚攢姣佸拰閲嶅緩錛岄偅涔堟墍鏈夌敤D3DPOOL_MANAGED鍒涘緩鐨勮祫婧愪篃蹇呴』琚噸寤恒?br>
鍦ㄥ垱寤烘椂浣跨敤D3DPOOL_DEFAULT鏍囧織鎸囧畾鎶婅祫婧愭斁鍦ㄩ粯璁ょ殑姹犱腑銆傚湪榛樿鐨勬睜涓殑璧勬簮鍦ㄨ澶囦粠涓㈠け鐘舵佸埌鎿嶄綔鐘舵佺殑杞崲榪囩▼涓笉鎸佺畫瀛樺湪錛岃繖浜涜祫婧愬繀欏誨湪璋冪敤Reset涔嬪墠閲婃斁錛岀劧鍚庨噸寤恒?br>
鏇村鏈夊叧璁懼鐨勪涪澶辯姸鎬佺殑淇℃伅錛岃鍙傞槄涓㈠け鐨勮澶囥?br>
娉ㄦ剰涓嶆槸鎵鏈夌殑綾誨瀷鍜岀敤閫旈兘鏀寔璧勬簮綆$悊銆備緥濡傦紝鐢―3DUSAGE_RENDERTARGET鏍囧織鍒涘緩鐨勫璞′笉鏀寔璧勬簮綆$悊銆傚彟澶栵紝涓嶅緩璁闇瑕侀綣佹敼鍙樺叾鍐呭鐨勫璞′嬌鐢ㄨ祫婧愮鐞嗐備緥濡傦紝鍦ㄦ煇浜涚‖浠朵笂瀵逛竴涓瘡甯ч兘闇鏀瑰彉鐨勯《鐐圭紦瀛樿繘琛岃嚜鍔ㄧ鐞嗕細涓ラ噸闄嶄綆鎬ц兘銆備絾鏄紝瀵圭汗鐞嗚祫婧愭潵璇磋繖涓嶆槸涓涓棶棰樸?br>

渚嬪瓙錛堟憳鑷猚odesampler錛夛細

浠ヤ笅鍐呭涓虹▼搴忎唬鐮?

//-----------------------------------------------------------------------------
// Name: invalidateDeviceObjects()
// Desc: If the lost device can be restored, the application prepares the
//        device by destroying all video-memory resources and any
//        swap chains. This is typically accomplished by using the SAFE_RELEASE
//        macro.
//-----------------------------------------------------------------------------
HRESULT invalidateDeviceObjects( void )
{
     //
     // To see how mismanagement of an object''s reference counter can cause us
     // problems when calling Reset on the device, uncomment the line below.
     // The line below will call AddRef() on the vertex buffer object, which w
     // ill add one to the vertex buffer''s reference count. This will cause it
     // to hang around after we call Release() on it, which is not what we
     // wanted to happen here.
     //
     //g_pVertexBuffer->AddRef();

     //
     // NOTE: You could use the SAFE_RELEASE macro to invalidate your device
     //        objects like so:
     //
      SAFE_RELEASE( g_pTexture )
      SAFE_RELEASE( g_pVertexBuffer )
      SAFE_RELEASE( g_pTeapotMesh )
    
     return S_OK;
}

//-----------------------------------------------------------------------------
// Name: restoreDeviceObjects()
// Desc: You are encouraged to develop applications with a single code path to
//        respond to device loss. This code path is likely to be similar, if not
//        identical, to the code path taken to initialize the device at startup.
//-----------------------------------------------------------------------------
HRESULT restoreDeviceObjects( void )
{
     //
     // Set some important state settings...
     //

     D3DXMATRIX matProj;
     D3DXMatrixPerspectiveFovLH( &matProj, D3DXToRadian( 45.0f ),
                                 640.0f / 480.0f,
                                 //(float)(g_d3dpp.BackBufferWidth / g_d3dpp.BackBufferHeight),
                                 0.1f, 100.0f );
     g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );

     g_pd3dDevice->SetRenderState( D3DRS_ZENABLE, TRUE );
     g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, TRUE );
     g_pd3dDevice->SetRenderState( D3DRS_SPECULARENABLE, TRUE );

     g_pd3dDevice->SetLight( 0, &g_pLight0 );
     g_pd3dDevice->LightEnable( 0, TRUE );

     g_pd3dDevice->SetRenderState( D3DRS_AMBIENT, D3DCOLOR_COLORVALUE( 0.2f, 0.2f, 0.2f, 1.0f ) );

     //
     // Create a texture object...
     //

     D3DXCreateTextureFromFile( g_pd3dDevice, "test.bmp", &g_pTexture );

     g_pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );
     g_pd3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );

     //
     // Create a vertex buffer...
     //
     // NOTE: When a device is lost, vertex buffers created using  
     // D3DPOOL_DEFAULT must be released properly before calling
     // IDirect3DDevice9::Reset.
     //

     g_pd3dDevice->CreateVertexBuffer( 4*sizeof(QuadVertex),
                                       D3DUSAGE_WRITEONLY,
                                       QuadVertex::FVF_Flags,
                                       //D3DPOOL_MANAGED, // Does not have to be properly Released before calling IDirect3DDevice9::Reset
                                       D3DPOOL_DEFAULT,    // Must be Released properly before calling IDirect3DDevice9::Reset
                                       &g_pVertexBuffer, NULL );
     void *pVertices = NULL;

     g_pVertexBuffer->Lock( 0, sizeof(g_quadVertices), (void**)&pVertices, 0 );
     memcpy( pVertices, g_quadVertices, sizeof(g_quadVertices) );
     g_pVertexBuffer->Unlock();

     //
     // Create a mesh object...
     //
     // NOTE: When a device is lost, meshes created using D3DXMESH_DYNAMIC
     // must be released properly before calling IDirect3DDevice9::Reset.
     //

     D3DXLoadMeshFromX( "teapot.x",
                        //D3DXMESH_SYSTEMMEM, // Does not have to be properly Released before calling IDirect3DDevice9::Reset
                        //D3DXMESH_MANAGED,    // Does not have to be properly Released before calling IDirect3DDevice9::Reset
                        //D3DXMESH_WRITEONLY, // Does not have to be properly Released before calling IDirect3DDevice9::Reset
                        D3DXMESH_DYNAMIC,      // Must be Released properly before calling IDirect3DDevice9::Reset
                        g_pd3dDevice,
                        NULL, NULL, NULL, NULL, &g_pTeapotMesh );
     return S_OK;
}

//-----------------------------------------------------------------------------
// Name: render()
// Desc:
//-----------------------------------------------------------------------------
void render( void )
{
     //
     // Before we render, we need to make sure we haven''t lost our device.
     // If we have, we''ll need to restore it before we can continue.
     //

     HRESULT hr;

     if( g_bDeviceLost == true )
     {
         // Yield some CPU time to other processes
         Sleep( 100 ); // 100 milliseconds

         //
         // Test the cooperative level to see if it''s okay to render.
         // The application can determine what to do on encountering a lost
         // device by querying the return value of the TestCooperativeLevel
         // method.
         //

         if( FAILED( hr = g_pd3dDevice->TestCooperativeLevel() ) )
         {
             // The device has been lost but cannot be reset at this time.
             // Therefore, rendering is not possible and we''ll have to return
             // and try again at a later time.
             if( hr == D3DERR_DEVICELOST )
                 return;

             // The device has been lost but it can be reset at this time.
             if( hr == D3DERR_DEVICENOTRESET )
             {
                 //
                 // If the device can be restored, the application prepares the
                 // device by destroying all video-memory resources and any
                 // swap chains.
                 //

                 invalidateDeviceObjects();

                 //
                 // Then, the application calls the Reset method.
                 //
                 // Reset is the only method that has an effect when a device
                 // is lost, and is the only method by which an application can
                 // change the device from a lost to an operational state.
                 // Reset will fail unless the application releases all
                 // resources that are allocated in D3DPOOL_DEFAULT, including
                 // those created by the IDirect3DDevice9::CreateRenderTarget
                 // and IDirect3DDevice9::CreateDepthStencilSurface methods.
                 //

                 hr = g_pd3dDevice->Reset( &g_d3dpp );

                 if( FAILED(hr ) )
                     return;

                 //
                 // Finally, a lost device must re-create resources (including  
                 // video memory resources) after it has been reset.
                 //

                 restoreDeviceObjects();
             }

             return;
         }

         g_bDeviceLost = false;
     }

     //
     // Render a teapot and textured quad...
     //

     g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
                          D3DCOLOR_COLORVALUE(0.35f,0.53f,0.7f,1.0f), 1.0f, 0 );

     g_pd3dDevice->BeginScene();
     {
         D3DXMATRIX matView;
         D3DXMATRIX matWorld;
         D3DXMATRIX matRotation;
         D3DXMATRIX matTranslation;

         D3DXMatrixIdentity( &matView );
         g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );

         // Place and render first teapot...
         D3DXMatrixRotationYawPitchRoll( &matRotation, D3DXToRadian(g_fSpinX), D3DXToRadian(g_fSpinY), 0.0f );
         D3DXMatrixTranslation( &matTranslation, 1.5f, 0.0f, 6.0f );
         matWorld = matRotation * matTranslation;
         g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );

         g_pd3dDevice->SetMaterial( &g_teapotMtrl );
         g_pTeapotMesh->DrawSubset(0);

         // Place and render textured quad...
         D3DXMatrixTranslation( &matTranslation, -1.5f, 0.0f, 6.0f );
         matWorld = matRotation * matTranslation;
         g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );

         g_pd3dDevice->SetMaterial( &g_quadMtrl );
         g_pd3dDevice->SetTexture( 0, g_pTexture );
         g_pd3dDevice->SetStreamSource( 0, g_pVertexBuffer, 0, sizeof(QuadVertex) );
         g_pd3dDevice->SetFVF( QuadVertex::FVF_Flags );
         g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );
     }
     g_pd3dDevice->EndScene();

     //
     // If Present fails with D3DERR_DEVICELOST the application needs to be
     // notified so it cleanup resources and reset the device.
     //

     hr = g_pd3dDevice->Present( NULL, NULL, NULL, NULL );

if( g_bHandleLostDevice == true )
{
if( hr == D3DERR_DEVICELOST )
g_bDeviceLost = true;
}
}

 

銆庡綋璁懼涓㈠け涔嬪悗銆?br>
銆銆涓嶈閫氳繃浠諱綍鏂瑰紡鍙戠敓浜嗚澶囦涪澶憋紝鎵鏈夌殑鎿嶄綔鍑犱箮閮戒細澶辨晥錛屽彧鏈塕elease()鍙互鐢ㄢ斺斿叾瀹濪3D浼氫繚璇佹湁閮ㄥ垎鎿嶄綔鍙互鎴愬姛錛屼絾鏄篃浠呬粎鏄?#8220;鍙互”鎴愬姛鑰屼笉鏄?#8220;涓瀹?#8221;鎴愬姛錛屾墍浠ヤ綘榪樹笉濡傝瀹氫涪澶辯殑鏃跺欏叏閮戒細澶辮觸姣旇緝濂解斺斾互鍙奍Direct3DDevice9::TestCooperativeLevel銆傚洜姝ゅ湪璁懼涓㈠け涔嬪悗錛屼綘搴旇鍋滄鏁翠釜娓告垙寰幆錛岃岄氳繃鍙嶅璋冪敤IDirect3DDevice9::TestCooperativeLevel鍒ゆ柇璁懼鏄惁鍙敤銆?br>
銆嶪Direct3DDevice9::TestCooperativeLevel銆?br>
銆銆榪欎釜鏂規硶媯嫻嬪綋鍓嶇殑璁懼鐘舵併傝繑鍥炲兼湁鍥涚錛欴3D_OK涓鍒囨甯革紝D3DERR_DEVICELOST璁懼涓㈠け錛孌3DERR_DEVICENOTRESET璁懼鍙互Reset銆傚彟澶栬繕鏈塂3D9鏂板鐨凞3DERR_DRIVERINTERNALERROR錛岄亣鍒拌繖涓綘灝卞畬铔嬩簡錛屽熀鏈笉鍙兘鎭㈠浜嗭紝緇堟紼嬪簭鍚с?br>銆銆鎸夌収欏哄簭鏉ヨ錛屽鏋滄父鎴忓湪姝e父榪愯錛孌3D_OK浼氳繑鍥烇紱濡傛灉鍙戠敓浜嗚澶囦涪澶卞茍涓斿湪榪欎釜鏃跺欎笉鑳芥仮澶嶏紝姣斿鍏ㄥ睆騫曟ā寮忕殑鏃跺欑敤鎴峰垏鎹㈠埌浜哤indows妗岄潰錛屽氨浼氳繑鍥濪3DERR_DEVICELOST錛涘鏋滅敤鎴峰張鍒囨崲鍥炰簡娓告垙錛岃澶囧彲浠ユ仮澶嶄簡錛堣繕娌℃仮澶嶅憿錛佸彧鏄?#8220;鍙互”鎭㈠鑰屽凡錛夛紝灝變細榪斿洖D3DERR_DEVICENOTRESET銆?br>銆銆鍙﹀錛孖Direct3DDevice9::Present涔熶細榪斿洖綾諱技鐨勫鹼紝涓嶈繃浣犳渶濂藉埆鎸囨湜榪欎釜錛岃佽佸疄瀹炵殑鐢═estCooperativeLevel銆傚洜涓篜resent鍦ㄨ澶囧彲浠ユ仮澶嶇殑鏃跺欒繕鏄繑鍥濪3DERR_DEVICELOST錛堝涓鍙ワ細D3D10鐨勬椂鍊橳estCooperativeLevel灝變細瀹屽叏鏁村悎鍒癙resent閲岄潰浜嗭紝鍙枩鍙春鍙枩鍙春錛?br>
銆庡鐞嗚澶囦涪澶便?br>
銆銆鐪嬩笅闈㈢殑浼唬鐮侊細

switch (IDirect3DDevice9::TestCooperativeLevel()){
銆銆case D3D_OK:
銆銆銆銆GameLoop();
銆銆銆銆break;
銆銆case D3DERR_DEVICELOST:
銆銆銆銆break;
銆銆case D3DERR_DEVICENOTRESET
銆銆銆銆OnLostDevice();
銆銆銆銆IDirect3DDevice9::Reset();
銆銆銆銆OnResetDevice();
銆銆銆銆break;
銆銆default:
銆銆銆銆QuitGame();
銆銆銆銆break;
}

銆銆GameLoop()灝辨槸浣犵殑娓告垙榪愯鐨勮繃紼嬩簡銆傛妸榪欎釜switch鍐欏湪鎴戜滑娓告垙妗嗘灦鐨凣ameMain()閮ㄥ垎錛屽叿浣撶殑浣嶇疆鍙互鐪嬩換浣曚竴璇濋檮甯︾殑婧愪唬鐮併?br>銆銆濂藉儚鎴戜竴鐩存病鏈夎IDirect3DDevice9::Reset鐨勫弬鏁板晩錛熷洜涓哄彧鏈変竴涓弬鏁幫紝灝辨槸鎸囧悜D3DPRESENT_PARAMS鐨勬寚閽堛傛妸浣犵涓嬈″垱寤鴻澶囨椂浣跨敤鐨凞3DPRESENT_PARAMS緇撴瀯淇濆瓨璧鋒潵錛屼緵Reset鏉ョ敤銆?br>銆銆OnLostDevice()灝辨槸Release鎺夋墍鏈塂3DPOOL_DEFAULT鐨勮祫婧愶紝OnResetDevice()灝辨槸Create*()鎭㈠鍟︼紒浣犲彲鑳芥敞鎰忓埌ID3DXFont銆両D3DXSprite絳夌瓑閮芥湁鍚屽悕鐨勬柟娉曪紝灝辨槸鍦ㄨ繖涓椂鍊欒皟鐢ㄧ殑銆傚鏋滀綘娌℃湁榪欎箞鍋氾紝涔熷氨鏄榪樹繚鐣欑潃浠諱綍D3DPOOL_DEFAULT鐨勮祫婧愮殑璇濓紝IDirect3DDevice9::Reset灝變竴瀹氫細澶辮觸銆?br>銆銆鍙﹀鍦∣nResetDevice閲岄潰浣犺繕瑕侀噸鏂拌繘琛孲etRenderState銆丼etSamplerState絳夌瓑錛孯eset涔嬪悗榪欎簺涓滆タ涔熶涪澶變簡銆傚疄闄呬笂Reset鍜岄噸鏂板垱寤轟竴嬈¤澶囩被浼鹼紝鎵涓嶅悓鐨勬槸閲嶆柊鍒涘緩璁懼鐨勮瘽浣犻渶瑕佽繛D3DPOOL_MANAGED鐨勮祫婧愪篃Release鎺夈傝繖涓瘽棰樺氨涓嶈璁轟簡銆?br>銆銆浠庝唬鐮佸彲浠ョ湅鍑烘潵錛孌3DERR_DEVICELOST鏃剁▼搴忎粈涔堥兘娌″仛錛屽彧鏄湪鍌葷瓑銆傛垜璁や負榪欐槸涓涓ソ涔犳儻錛屽洜涓哄疄鍦ㄤ笉鑳戒繚璇佸湪D3DERR_DEVICELOST鏃墮櫎浜哛elease榪樿兘騫蹭粈涔堬紝涓庡叾榪欐牱榪樹笉濡傜瓑璁懼鑳界敤浜嗗啀璇淬?br>
銆銆瀹炲湪鎳掑緱綆¤祫婧愮殑璇濓紝鍏ㄩ儴D3DPOOL_MANAGED濂戒簡銆傝嚦浜庢覆鏌撳璞★紵鑷繁鎯沖姙娉曘?br>
銆庝漢宸ュ埗閫?#8220;璁懼涓㈠け”銆?br>
銆銆“騫插槢榪樿鍒墮犺澶囦涪澶卞晩錛?#8221;濡傛灉鏇存敼娓告垙鍒嗚鯨鐜囥佽壊娣便佸垏鎹㈠叏灞忓箷鍙婄獥鍙g姸鎬侊紝榪涜榪欐牱鐨勬搷浣滀篃瑕侀氳繃Reset錛屽悓鏍風殑錛孯eset涔嬪墠涔熻閲婃斁鎺夋墍鏈塂3DPOOL_DEFAULT璧勬簮錛堝叾瀹炰弗鏍兼潵璇達紝榪樻湁鏇村鐨勮祫婧愪篃瑕侀噴鏀撅紝涓嶈繃鍦?D涓嬪熀鏈笉浼氬垱寤鴻繖綾昏祫婧愶紝浣犲氨涓嶇敤綆′簡錛夊茍涓旇皟鐢↖D3DXSprite::OnLostDevice涔嬬被鐨勬柟娉曘傝繖灝辨槸浜哄伐鍒墮?#8220;璁懼涓㈠け”浜嗐傚疄闄呬笂鍦ㄨ繖涓繃紼嬭澶囧茍娌℃湁鐪熸鐨勪涪澶憋紝鍙槸浼氭湁涓孌墊椂闂村浜庝笉鍙敤鐨勭姸鎬侊紝姝ゆ椂Reset灝氭湭榪斿洖錛屾暣涓狣3D璁懼灝卞ソ鍍忔浜嗕竴鏍楓備婦涓緥瀛愶紝浣犲垏鎹㈡闈㈠垎杈ㄧ巼錛屼細鏈夐偅涔堜竴孌墊椂闂存樉紺哄櫒涓婁粈涔堥兘涓嶆樉紺猴紝鐒跺悗寰堝揩灝辨甯鎬簡銆傚拰榪欎釜鐜拌薄鏄悓涓涓師鍥犮俁eset鎴愬姛鍚庤寰楁仮澶嶈祫婧愩?br>銆銆浣犲彲鑳芥敞鎰忓埌榪欓噷鐨凴eset鍜屼笂闈㈢殑Reset涓嶆槸涓鍥炰簨銆傜殑紜槸榪欐牱錛岃繖閲屾槸涓轟簡閲嶈鐘舵佽屼笉鏄仮澶嶈澶囥傚洜姝ゆ洿鏀瑰垎杈ㄧ巼銆佽壊娣辯殑Reset闇瑕佸啓鍒皊witch澶栭潰錛屼篃灝辨槸鍒拰瀹冩悈鍜岀殑鎰忔?_-bb銆傝屼笖浣犲彧闇瑕丱nLostDevice -> Reset -> OnResetDevice銆傝浣忥細姝g‘鐨勮皟鐢≧eset涓嶄細閫犳垚璁懼涓㈠け錛岃繖涓蹇靛埆寮勬販浜嗐?nbsp; 

杞嚜錛?/font>http://blog.csdn.net/zdl1016/archive/2007/07/04/1678507.aspx



]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区欧美| 欧美午夜激情视频| 亚洲美女黄色片| 亚洲日本欧美| 亚洲人成亚洲人成在线观看图片| 亚洲国产精品一区二区www在线| 欧美/亚洲一区| 亚洲日韩第九十九页| 9久草视频在线视频精品| 亚洲视频精品| 久久精品国产精品亚洲综合| 麻豆精品视频在线| 欧美日韩视频第一区| 国产酒店精品激情| 亚洲国产综合91精品麻豆| 亚洲手机在线| 久久亚洲国产精品一区二区| 亚洲福利视频一区| 午夜精品成人在线视频| 免费日韩视频| 国产乱理伦片在线观看夜一区| 亚洲尤物精选| 99re6这里只有精品| 一本色道久久综合亚洲二区三区| 亚洲午夜高清视频| 久久婷婷国产麻豆91天堂| 亚洲经典在线| 久久精品国产99国产精品澳门 | 日韩一区二区免费看| 午夜在线不卡| 亚洲精品国产精品国产自| 午夜久久资源| 欧美视频一区在线观看| 亚洲国产导航| 欧美在线视屏| 亚洲免费av观看| 蜜臀99久久精品久久久久久软件| 国产精品电影网站| 99精品视频免费全部在线| 久久综合狠狠综合久久激情| 亚洲特级片在线| 欧美啪啪成人vr| 亚洲欧洲日韩在线| 欧美不卡福利| 久久久999精品视频| 国产麻豆日韩欧美久久| 亚洲免费综合| 一区二区av在线| 欧美日本不卡高清| 亚洲另类自拍| 亚洲国产美女久久久久| 免费看成人av| 亚洲精品免费在线| 欧美激情区在线播放| 久久视频在线免费观看| 好吊日精品视频| 久久国产婷婷国产香蕉| 午夜老司机精品| 国产日产欧产精品推荐色| 亚洲欧洲99久久| 亚洲少妇自拍| 国产精品日韩在线播放| 欧美一区观看| 欧美一级在线亚洲天堂| 国产日韩欧美中文在线播放| 欧美一区二区三区视频免费播放| 亚洲综合色婷婷| 国产日韩精品一区二区三区 | 欧美午夜精品理论片a级大开眼界| 亚洲国产日日夜夜| 亚洲精品国精品久久99热一| 欧美另类极品videosbest最新版本| 亚洲美女av在线播放| 亚洲精品国精品久久99热一| 欧美日韩色一区| 欧美在线你懂的| 老鸭窝亚洲一区二区三区| 久久男女视频| 欧美 日韩 国产精品免费观看| 伊人伊人伊人久久| 亚洲第一狼人社区| 欧美视频日韩视频| 久久精品中文字幕一区二区三区| 欧美一区二区三区精品 | 欧美精品一区三区在线观看| 亚洲深夜福利| 久久国产一区二区三区| 亚洲国产一成人久久精品| 99精品久久久| 国内精品模特av私拍在线观看| 免费在线一区二区| 欧美日一区二区在线观看 | 久久久一二三| 欧美精品在线观看91| 羞羞漫画18久久大片| 蜜桃av一区二区三区| 亚洲欧美日韩视频一区| 久久嫩草精品久久久精品一| 亚洲小说春色综合另类电影| 欧美伊人影院| 亚洲网站在线| 欧美h视频在线| 久久精品视频导航| 欧美体内she精视频| 麻豆亚洲精品| 国产伦理精品不卡| 亚洲久久一区二区| 在线欧美电影| 午夜精品久久久久久久久久久久| 日韩一级黄色大片| 久久国产精品久久国产精品 | 久久综合久久综合九色| 欧美视频在线一区二区三区| 欧美www视频在线观看| 国产欧美一级| 亚洲一区二区三区三| 夜夜狂射影院欧美极品| 久久一区中文字幕| 久久亚洲综合色| 国产深夜精品福利| 亚洲摸下面视频| 亚洲欧美日韩国产综合在线| 欧美久久99| 亚洲精品视频在线观看免费| 亚洲激情电影在线| 久久亚洲春色中文字幕| 久久久久久综合| 国内自拍亚洲| 久久精品人人做人人爽| 久久综合伊人| 国内精品免费午夜毛片| 欧美专区日韩专区| 久久亚洲私人国产精品va媚药| 国产三级精品三级| 欧美一区亚洲一区| 乱码第一页成人| 在线欧美福利| 欧美69wwwcom| 欧美国产三区| 性色av一区二区三区| 欧美激情日韩| 亚洲乱码久久| 亚洲欧美制服另类日韩| 国产精品视频久久久| 亚洲一区二区三区高清不卡| 午夜精品影院| 国产欧美日韩麻豆91| 久久精品国语| 亚洲黄色免费网站| 一区二区三区四区蜜桃| 国产精品美女久久久久aⅴ国产馆| 亚洲婷婷在线| 久久中文久久字幕| 亚洲免费观看高清完整版在线观看| 欧美—级高清免费播放| 亚洲少妇最新在线视频| 久久久久久夜| 99精品视频免费观看| 国产久一道中文一区| 久久综合一区| 一本一本久久| 久久爱另类一区二区小说| 一区在线视频观看| 欧美日韩国产大片| 欧美一区二区三区四区在线观看| 欧美高清在线| 亚洲欧美激情视频| 国产美女扒开尿口久久久| 久久综合伊人77777蜜臀| 99精品视频免费观看| 久久不射中文字幕| 亚洲精品综合精品自拍| 国产欧美精品在线| 欧美电影免费观看大全| 亚洲自拍偷拍网址| 亚洲国产裸拍裸体视频在线观看乱了中文| 亚洲私拍自拍| 亚洲国产日韩欧美一区二区三区| 国产精品青草综合久久久久99| 久久久精品一区| 亚洲综合视频一区| 亚洲国产毛片完整版| 久久精品国产成人| 亚洲午夜精品久久久久久app| 一区免费观看| 国产视频观看一区| 国产精品久久一卡二卡| 欧美福利影院| 久久精品综合网| 亚洲欧美日韩国产精品| 亚洲美女视频| 亚洲人成免费| 欧美福利一区二区三区| 久久久人人人| 亚洲女同在线| 亚洲一区二区三区视频播放| 亚洲精品小视频在线观看| 亚洲第一网站| 在线不卡a资源高清| 红桃视频欧美|