首页 > 代码库 > Width vs Pitch

Width vs Pitch

1、单位不同,width是像素,pitch是字节。因此一个640*480的8位图和640*480的32位 图他们width一样而pitch不一样。 
2、pitch可能大于width个像素所占字节数。width就是图像实际显示的宽度;而pitch 是存储一行图像所占的字节(相邻两行起点指针的差值),有时为了高效处理,会将每 行图像都对齐存储,这样pitch就包括了对齐使用的填充字节。
 
void ChangeRed(){    //假定_surface是一个指向IDirectSurface9接口的指针    //每个像素 32bit的像素格式    //取得表面描述    D3DSURFACE_DESC surfaceDesc;    _surface->GetDesc(&surfaceDesc);    //取得被锁定的表面像素指针    D3DLOCKED_RECT lockedRect;    _surface->LockRect(        &lockedRect,//指向被锁定表面的数据        0,//0表示锁定全部表面        0);//0表示没有锁定标记    //遍历表面上的每个像素,将他们设为红色    DWORD *imageData = http://www.mamicode.com/(DWORD *)lockedRect.pBits;    for (int i = 0; i < surfaceDesc.Width; ++i)    {        for (int j = 0; j < surfaceDesc.Height; ++j)        {            //取得纹理索引            int index = i * lockedRect.Pitch / 4 + j;            imageData[index] = 0xffff0000;        }     }}