牵着老婆满街逛

严以律己,宽以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

DirectDraw:lpitch的理解

转载自:http://hi.baidu.com/daoguchengshu/item/06aa4a09d3ca7810ebfe3815

       lpitch是结构体DDSURFACEDESC2的一项,这个结构体描述了页面/表面的一些信息。

      lpitch一般译做步幅(stride)或内存宽度(memory width)。注意,它与DDSURFACEDESC2结构体中的另一项dwWidth的意义是不一样的。

     lpitch的单位是字节,dwWidth的单位是像素。所以,一个640×480×8(640×480个像素,每像素用8位,即一个字节表示)页面,dwWidth=640 像素(字节)。但是,此时Lpitch不一定就等于640(字节)!同样一个640×480×16的页面,它的Lpitch值也不一定等于640×2(字节)。

   这是因为,Lpitch中的字节数有时还包含了高速缓冲区的内存字节数。如下图:

       

       通过以上图可以看到,页面外面还有一段额外内存,而这段内存是未知的;所以说,假如一个640×480×8的页面,它的dwWidth值是640,但是,它的Lpitch值应该是640+x,x就是高速缓冲区Cache占用的内存。

      所以,如果要访问这个页面缓冲区的第y行的第x个像素,应该这样:

     ddsd.lpSurface[x+y*ddsd.lpitch]


posted on 2013-01-14 18:29 杨粼波 阅读(1028) 评论(0)  编辑 收藏 引用 所属分类: C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理