|
|
???????? ??? texture?????lockRect?????
lock();
D3DLOCKED_RECT d3dlr;
{
if (FAILED(m_pTexture->LockRect(0, &d3dlr, 0, 0)))
{
unlock();
return E_FAIL;
}
}
for( row = 0; row< (UINT)m_lVidHeight; row++)
{
pdwS = ( DWORD*)pBmpBuffer;
pdwD = ( DWORD*)pTxtBuffer;
for( col = 0; col < dwordWidth; col ++ )
{
pdwD[0] = pdwS[0] | 0xFF000000;
pdwD[1] = ((pdwS[1]<<8) | 0xFF000000) | (pdwS[0]>>24);
pdwD[2] = ((pdwS[2]<<16) | 0xFF000000) | (pdwS[1]>>16);
pdwD[3] = 0xFF000000 | (pdwS[2]>>8);
pdwD +=4;
pdwS +=3;
}
}
unlock();
??????????? ?? Mute,
void render()
{
video_rest.myDShow2texture.lock();
V( g_pd3dDevice->BeginScene() ) ;
drawFullTex(video_rest.myDShow2texture.getVideoTexture());
V( g_pd3dDevice->EndScene() );
video_rest.myDShow2texture.unlock();
}
void CTextureRenderer::lock()
{
DWORD dw = WaitForSingleObject(textureMutex, 1000);
if(dw == WAIT_TIMEOUT || dw == WAIT_FAILED) ASSERT(false);
}
void CTextureRenderer::unlock()
{
ReleaseMutex(textureMutex);
}
???????????xp???????win7?????????
??win7?directx9???????
????????????????? present ?? ? ?? ? V( g_pd3dDevice->EndScene() );?????DrawPraviateup???????
|
|