首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

IDirect3DSurface9的LockRect步骤得到的缓冲区的行为什么是32个字节对齐的

2012-09-15 
IDirect3DSurface9的LockRect方法得到的缓冲区的行为什么是32个字节对齐的我要用Direct3D显示一幅2D的图像

IDirect3DSurface9的LockRect方法得到的缓冲区的行为什么是32个字节对齐的
我要用Direct3D显示一幅2D的图像,在创建IDirect3DDevice9对象的时候,D3DPRESENT_PARAMETERS参数的成员如下赋值
  BackBufferWidth和BackBufferHeight等于图像的尺寸
  BackBufferFormat = D3DFMT_X8R8G8B8(真彩色32位)
  SwapEffect = D3DSWAPEFFECT_COPY(用ScrollView显示图像,Present的时候要指定范围)
  hDeviceWindow = ScrollView的m_hWnd
  Windowed = TRUE
  BackBufferCount = 1
  Flags = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER

在显示的时候先用IDirect3DDevice9的GetBackBuffer方法得到IDirect3DSurface9对象,然后调用IDirect3DSurface9对象的LockRect方法,第二个参数是NULL,第三个参数是0,这样得到的D3DLOCKED_RECT变量的Pitch成员的值总是按32个字节对齐的(32的倍数),和(BackBufferWidth * 4)不一定相等。请问这是什么原因,如何解决。

另外,请问LockRect方法的第二个参数怎么用。


[解决办法]
这应该是和硬件相关的,以这种对齐方式存取最有效率。

热点排行