DirectDraw: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]

目录
相关文章
C#编程-128:GDI绘图基础知识
C#编程-128:GDI绘图基础知识
121 0
C#编程-128:GDI绘图基础知识
|
Windows
Windows程序设计——GDI基本画图的操作实现
Windows程序设计——GDI基本画图的操作实现
316 0
MFC中MessageBeep与sndPlaySound播放声音函数使用
MessageBeep(0x00000000L);        //用来播放系统默认音频文件,如0x00000000L为系统提示音,具体音频对应规则,请参照MSDN。   sndPlaySound函数用来播放指定音频WAV文件,分为两种: 同步模式:音乐播放过程中函数不返回,播放完成才返回 异步播放在做游戏等需要播放时间较长的音乐时使用,因为程序不会在音乐播放过程中有假死的情况。
2757 0
|
C#
winfrom GDI知识
c#使用GDI+简单绘图 http://blog.csdn.net/smartsmile2012/article/details/30255303 NET3.5 GDI+ 图形操作1 http://www.
1021 0
|
缓存
DirectDraw用到的DDSURFACEDESC2
<strong>DDSURFACEDESC2</strong> 结构定义一个需求的平面.下面的例子演示了结构的定义和标志位的设定: <br> // Create the primary surface with one back buffer.  <br> ZeroMemory(&amp;ddsd, sizeof(ddsd)); <br> ddsd.dwSize = sizeof(d
1755 0
directdraw显示yuv422(yuy2)
<p><br> #include &lt;mmsystem.h&gt;<br> void CshowpicDlg::OnBnClickedButton3()<br> {<br>  // TODO: 在此添加控件通知处理程序代码</p> <p>    height=width=widthBytes=0;<br>  m_screen.SetWindowPos(&amp;CWnd::
2522 0
directdraw显示yuv420(YV12)
<p>height=width=widthBytes=0;<br>  m_screen.SetWindowPos(&amp;CWnd::wndBottom,0,0,720,576, SWP_NOMOVE | SWP_SHOWWINDOW);<br>  UpdateWindow();<br>  main_window_handle = m_screen.GetSafeHwnd();</
1315 0
高级DirectDraw
<div><strong><span style="font-size:18px">使用高彩模式</span></strong></div> <blockquote dir="ltr"> <div>上一章中说了可以用16位的色彩深度,但是16位的色彩深度的数据表示模式可以有两种:Alpha.5.5.5(or X.5.5.5) 和 5.6.5(这是16位色彩最常用的)。对于使用哪种16位
1427 0

热门文章

最新文章