|
|
我用direct3d9试着做一个小2D游戏。想把一张640x480的图片作为它的背景,我先用ID3DXSPRITE来画这个背景,但速度很慢,好像TEXTURE硬件不支持,把图片改成2^n大小也不行,好像图片太大了。
于是我试着用CreateOffscreenPlainSurface建个表面,D3DXLoadSurfaceFromFile读取图片。
g_pd3dDevice->CreateOffscreenPlainSurface( Info.Width, Info.Height, Info.Format, D3DPOOL_SYSTEMMEM, &g_pd3dBkSurface, NULL ) ;
D3DXLoadSurfaceFromFile( g_pd3dBkSurface, NULL, NULL, "bk.png", NULL, D3DX_FILTER_NONE, 0, NULL );
然后在Render()函数里面复制表面
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );
LPDIRECT3DSURFACE9 pbksurface = NULL;
g_pd3dDevice->GetBackBuffer( 0, 0, D3DBACKBUFFER_TYPE_MONO, &pbksurface );
g_pd3dDevice->UpdateSurface( g_pd3dBkSurface, NULL, pbksurface, NULL );
pbksurface->Release();
g_pd3dDevice-> resent( NULL, NULL, NULL, NULL );
结果不显示背景图片,也不知道速度快不快。到底该怎么弄呢? |
|