1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| D3DLOCKED_RECT rect;
HRESULT hr = pTexture->LockRect( 0, &rect, NULL, D3DLOCK_NO_DIRTY_UPDATE );
if( FAILED( hr ) )
return;
unsigned char * poDest = reinterpret_cast< unsigned char * >( rect.pBits );
unsigned char * poSrc = ( unsigned char * ) m_PixelBuffer->getPixels();
int Pitch = rect.Pitch;
BYTE *pBuffer;
for( int j = ( iHeight - 1 ) ; j >= 0 ; --j )
{
pBuffer = ( BYTE * ) poSrc + j * Pitch/4; //OK pour A8R8G8B8
for( int i = 0 ; i < iWidth ; ++i )
{
*poDest = *pBuffer;
*( ++poDest ) = *( ++pBuffer );
*( ++poDest ) = *( ++pBuffer );
*( ++poDest ) = 0xFF;
++poDest;
++pBuffer;
}
}
pTexture->UnlockRect( 0 );
poD3DDevice->SetTexture( 0, pTexture ); |