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

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


璧勬簮綆$悊鏄皢璧勬簮浠庣郴緇熷唴瀛樻彁鍗囧埌璁懼鍙闂瓨鍌ㄥ櫒鍙婁粠璁懼鍙闂瓨鍌ㄥ櫒涓姏寮冪殑榪囩▼銆侻icrosoft? Direct3D?榪愯搴撴湁鑷繁鐨勫熀浜庢渶榪戞渶灝戜嬌鐢紙least-recently-used錛変紭鍏堢駭鎶鏈殑綆$悊綆楁硶銆傚綋Direct3D媯嫻嬪埌鍦ㄤ竴甯т腑鈥斺斿湪IDirect3DDevice9::BeginScene鍜孖Direct3DDevice9::EndScene璋冪敤涔嬮棿鈥斺旇澶囧彲璁塊棶鍐呭瓨鏃犳硶鍚屾椂瀛樺偍鎵鏈夎祫婧愭椂錛屽畠?yōu)鍒囨崲鍒版渶榪戞渶澶氫嬌鐢紙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>
銆銆榪欎釜鏂規(guī)硶媯嫻嬪綋鍓嶇殑璁懼鐘舵併傝繑鍥炲兼湁鍥涚錛欴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鏃剁▼搴忎粈涔堥兘娌″仛錛屽彧鏄湪鍌?cè)澀夈傛垜璁や負榪欐槸涓涓ソ涔犳儻錛屽洜涓哄疄鍦ㄤ笉鑳戒繚璇佸湪D3DERR_DEVICELOST鏃墮櫎浜哛elease榪樿兘騫蹭粈涔堬紝涓庡叾榪欐牱榪樹笉濡傜瓑璁懼鑳界敤浜嗗啀璇淬?br>
銆銆瀹炲湪鎳掑緱綆¤祫婧愮殑璇濓紝鍏ㄩ儴D3DPOOL_MANAGED濂戒簡銆傝嚦浜庢覆鏌撳璞★紵鑷繁鎯沖姙娉曘?br>
銆庝漢宸ュ埗閫?#8220;璁懼涓㈠け”銆?br>
銆銆“騫插槢榪樿鍒墮犺澶囦涪澶卞晩錛?#8221;濡傛灉鏇存敼娓告垙鍒嗚鯨鐜囥佽壊娣便佸垏鎹㈠叏灞忓箷鍙婄獥鍙g姸鎬侊紝榪涜榪欐牱鐨勬搷浣滀篃瑕侀氳繃Reset錛屽悓鏍風(fēng)殑錛孯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>
            欧美午夜精品久久久久久久| 国产女人精品视频| 亚洲黄色一区二区三区| 久久久久久九九九九| 欧美一区二区福利在线| 韩国一区电影| 欧美黄色一级视频| 欧美日韩一区三区| 午夜精品久久久99热福利| 性欧美暴力猛交另类hd| 狠狠v欧美v日韩v亚洲ⅴ| 男女精品网站| 欧美伦理在线观看| 欧美一区影院| 美女日韩在线中文字幕| 一区二区三区黄色| 欧美一级片久久久久久久| 在线观看视频免费一区二区三区| 欧美国产先锋| 国产精品久久久久av免费| 久久久久高清| 欧美日韩不卡在线| 久久黄金**| 欧美搞黄网站| 久久国内精品视频| 欧美精品三级日韩久久| 欧美一二三区在线观看| 美女视频黄 久久| 午夜精品久久久久影视| 久久五月天婷婷| 午夜亚洲福利| 欧美插天视频在线播放| 欧美中文在线免费| 欧美电影免费观看高清| 久久成人免费网| 欧美人与禽猛交乱配视频| 久久精品视频网| 欧美色大人视频| 牛夜精品久久久久久久99黑人| 欧美色区777第一页| 免费日韩av片| 国产一区二区三区免费观看| 亚洲精选在线| 亚洲欧洲日产国产综合网| 午夜亚洲影视| 亚洲午夜一二三区视频| 免费亚洲一区二区| 老司机午夜精品视频在线观看| 欧美午夜精品电影| 91久久国产精品91久久性色| 国产午夜精品福利| 亚洲自拍偷拍福利| 亚洲桃花岛网站| 欧美极品在线观看| 欧美二区不卡| 亚洲国产综合在线| 老鸭窝毛片一区二区三区| 久久久久久69| 国内精品久久久| 欧美一区二区三区四区在线观看地址 | 新67194成人永久网站| 亚洲一区三区电影在线观看| 美女爽到呻吟久久久久| 久热成人在线视频| 狠狠色伊人亚洲综合成人| 欧美亚洲专区| 久久久综合网站| 国模套图日韩精品一区二区| 午夜视频一区在线观看| 欧美影院在线| 极品日韩av| 久久日韩精品| 亚洲国产岛国毛片在线| 亚洲精美视频| 欧美另类亚洲| 一区二区三区色| 亚洲欧美国产精品va在线观看| 欧美午夜宅男影院| 亚洲欧美日韩天堂| 久久精品亚洲一区二区| 伊人久久亚洲热| 久久亚洲一区二区三区四区| 欧美99在线视频观看| 亚洲精品日韩在线| 欧美视频在线观看视频极品| 亚洲一区三区电影在线观看| 欧美一级专区| 亚洲大片av| 欧美日韩亚洲一区二区三区在线观看 | 欧美成人精品影院| 亚洲欧洲视频| 国产精品家教| 久久国产黑丝| 亚洲激情视频网站| 亚洲欧美日韩综合| 影音国产精品| 欧美日韩一二区| 欧美淫片网站| 亚洲激情国产| 久久精视频免费在线久久完整在线看| 激情综合在线| 欧美三日本三级少妇三2023| 欧美一级专区免费大片| 欧美激情一区二区三区全黄 | 在线观看日韩国产| 欧美日韩亚洲成人| 久久av老司机精品网站导航| 亚洲国产精品第一区二区三区| 亚洲一区二区三区视频| 在线成人av网站| 国产精品国产精品| 蘑菇福利视频一区播放| 亚洲在线免费| 亚洲精品麻豆| 蜜桃av综合| 欧美一区二区| 一本色道久久综合亚洲精品不卡| 国产专区精品视频| 欧美亚洲第一页| 欧美1级日本1级| 久久国产欧美精品| 亚洲女人小视频在线观看| 亚洲日本va午夜在线影院| 久久色在线观看| 欧美一区二区精品| 亚洲一区二区黄| 日韩视频欧美视频| 在线观看视频一区二区欧美日韩| 国产精品第一页第二页第三页| 欧美18av| 开元免费观看欧美电视剧网站| 午夜精品久久久久久久| 一区二区三区免费观看| 亚洲国产精品一区在线观看不卡 | 免费成人美女女| 久久精品午夜| 亚洲男人的天堂在线aⅴ视频| 日韩视频专区| 99re在线精品| 日韩亚洲欧美高清| 日韩视频一区| 99re6热在线精品视频播放速度| 亚洲国产精品久久久久| 在线观看国产成人av片| 国模私拍视频一区| 激情六月综合| 亚洲第一黄色网| 91久久国产综合久久| 亚洲国产欧洲综合997久久| 伊人久久亚洲美女图片| 国内精品久久久久久影视8 | 欧美激情一区二区久久久| 欧美黑人在线播放| 欧美精品一区二区三区四区| 欧美欧美天天天天操| 欧美性色视频在线| 国产精品男gay被猛男狂揉视频| 国产精品美女www爽爽爽视频| 国产精品色网| 国产一区二区激情| 亚洲第一毛片| 亚洲美女黄色| 中国成人亚色综合网站| 亚洲欧美日韩爽爽影院| 欧美伊久线香蕉线新在线| 久久久综合视频| 亚洲国产一区视频| 亚洲视频1区2区| 午夜一区不卡| 久久夜色精品一区| 欧美日韩视频在线| 国产欧美日本一区视频| 一区二区三区在线视频观看| 最新日韩精品| 西西人体一区二区| 欧美不卡视频一区发布| 亚洲美洲欧洲综合国产一区| 一区二区三区免费观看| 久久不射网站| 欧美—级在线免费片| 国产毛片一区| 亚洲每日在线| 欧美中文在线观看国产| 亚洲福利视频一区| 亚洲一区二区三区高清| 麻豆成人精品| 国产精品乱码| 亚洲三级电影全部在线观看高清| 午夜精品久久久| 欧美激情第三页| 亚洲欧美一级二级三级| 欧美成人按摩| 国产区精品视频| 日韩视频在线免费| 久久综合狠狠| 亚洲伊人观看| 欧美日韩福利在线观看| 黑人巨大精品欧美黑白配亚洲| 一区二区av在线| 美女网站久久|