DirextX—ddsd.lpitch是什么?

DirextX—ddsd.lpitch是什么?    

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]

原文地址:https://www.cnblogs.com/fangshenghui/p/1700634.html