我的程序是通过D3D的Sprite,来实现2D功能的。我程序中的功能是将电子眼所拍摄的人像,去掉背景颜色显示在程序中。本来一切是很好,由于我机器性能不是太好,每 秒能处理70帧的数据。这样的速度已经完全满足了我的要求,不过当我加入以下的代码的后,性能发生了很大的变化,每秒只有7帧的速度。请问怎么优化,谢谢。 LPDIRECT3DTEXTURE9 m_pCamer;//我将电子眼采集的图像数据,放入到m_pCamer中。 if( FAILED ( hr=D3DXCreateTexture(m_pDevice,640,480,1,0, D3DFMT_A8R8G8B8,D3DPOOL_MANAGED,&m_pCamer) ) ) { MessageBox(NULL, TEXT("CreateTexture"), TEXT("Error"), MB_OK); }/*以上为初始化部分*/ /*以下代码在每一帧中处理*/ //此时m_pCamer中已经有电子眼采集的数据了。 if ( SUCCEEDED ( m_pCamer->LockRect( 0, &d3dlrect, NULL, 0 ) ) && SUCCEEDED( m_pCamer->GetLevelDesc(0,&Desc) ) ) { DWORD *pDst = (DWORD *)d3dlrect.pBits; int DPitch = d3dlrect.Pitch; for( j = 0; j < Desc.Height; j++) { for( i = 0; i< Desc.Width; i++) { /*此处对每一个象素进行处理*/ } }/*这两个循环应该很占性能,我不知道怎样优化。因为我必需要对每个象素点进行处理*/ m_pCamer->UnlockRect( 0 ); } //最后再显示。 请你帮我指导一下,就是关于Texture的每一个象素时,性能问题怎么解决的。是不是有什么选项没有打开?我以前用DirectDraw做同样的功能的程序性能要高很多。 望回复谢谢。 |