• 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 = (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;
            }
         }
    
    }
    本文由博主(YinaPan)原创或者转载,如若转载请务必注明出处,谢谢合作!
  • 相关阅读:
    Java自学二十六天
    Java自学三十四天
    Java自学三十二天
    Java自学三十天
    Java开学考试心得
    Java自学二十九天
    Java自学二十八天
    Java自学三十一天
    Java自学三十三天
    2020年月12日Java学习日记
  • 原文地址:https://www.cnblogs.com/YinaPan/p/3889774.html
Copyright © 2020-2023  润新知