龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VB开发 >

DirectX7.0使用心得(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
设定完视窗模式或全屏幕模式后,如果你是设定成全屏幕模式的话(也就是独占模式),接著就必须设定显示模式。 objDD.SetDisplayMode640,480,16,0,DDSDM_DEFAULT 参数中的640,480指的是640x480的模式,
设定完视窗模式或全屏幕模式后,如果你是设定成全屏幕模式的话(也就是独占模式),接著就必须设定显示模式。
  objDD.SetDisplayMode640,480,16,0,DDSDM_DEFAULT
  参数中的640,480指的是640x480的模式,而16指的是16万色,如果是8的话则是256色,想改变显示模式的话只要改变这三个变数就可以了,一般常用的模式有:
  320x20016万
  320x240256
  640x480256
  640x48016万
  
  Surface简介:
  Surface就是DirectDraw用的显示记忆体,图像就是要画在Surface上面,一般来说有分成几种类型。
  primarysurface屏幕上可以看到的显示记忆体,图像画在上面就能显示在屏幕上。
  backbuffersurface这是一个能跟primarysurface作快速切换的Surface。
  offscreensurface这是一个屏幕上看不见的Surface,可以用来存放图像。
  
  我们现在就先来介绍建立primarysurface的方法,首先得宣告一个Surface物件和一个DDSURFACEDESC结构。
  DimobjDDPrimSurfAsDirectDrawSurface7
  Dimddsd1AsDDSURFACEDESC2
  
  'DDSURFACEDESC主要是记录一个Surface的结构,像是Surface的高度、宽度之类的,建立一个primarysurface通常只要填入ddsCaps就可以了。
  ddsd1.lFlags=DDSD_CAPS'设定DDSURFACEDESC结构中的ddsCaps有效。
  ddsd1.ddsCaps.lCaps=DDSCAPS_PRIMARYSURFACE'设定要建立的是primarysuface。
  SetobjDDPrimSurf=objDD.CreateSurface(ddsd1)'呼叫CreateSurface后即建立完成。
  
  'offscreensurface的建立法则是要设定DDSURFACEDESC结构中的ddsCaps、dwHeight、dwWidth。
  DimobjDDOffSurfAsDirectDrawSurface7
  Dimddsd1AsDDSURFACEDESC2
  
  ddsd1.lFlags=DDSD_CAPSOrDDSD_HEIGHTOrDDSD_WIDTH
  '设定ddsCaps、lHeight、lWidth有效
  ddsd1.ddsCaps.lCaps=DDSCAPS_OFFSCREENPLAIN'设定要建立offscreensurface
  ddsd1.lWidth=640'设定Surface的宽度
  ddsd1.lHeight=480'设定Surface的长度
  SetobjDDOffSurf=objDD.CreateSurfaceFromFile("img1.bmp",ddsd1)
  'offscreensurface建立完成并把img.bmp图档读取到offscreensurface里面。
  
  一般来说不会直接在primarysurface上直接画图,我通常都是先在backbuffersurface上画,再利用切换的功能将Primarysurface和backbuffersurface交换,所以在这里介绍backbuffersurface的建立方法,由於要跟primarysurface一起建立,所以Primarysurface的建立方法也就有点不同。
  DimobjDDPrimSurfAsDirectDrawSurface7
  DimobjDDBackSurfAsDirectDrawSurface7
  Dimddsd1AsDDSURFACEDESC2
  
  ddsd1.lFlags=DDSD_CAPSOrDDSD_BACKBUFFERCOUNT
  '设定ddsCaps和lBackBufferCount有效
  ddsd1.lBackBufferCount=1'设定Backbuffersurface的数量
  ddsd1.ddsCaps.lCaps=DDSCAPS_PRIMARYSURFACEOrDDSCAPS_FLIPOrDDSCAPS_COMPLEX
  '设定要建立一个由primarysurface和backbuffersurface所构成的Surface
  SetobjDDPrimSurf=objDD.CreateSurface(ddsd1)'primarysurface建立完成
  
  DimcapsAsDDSCAPS2宣告一个DDSCAPS结构
  caps.lCaps=DDSCAPS_BACKBUFFER设定要建立backbuffersurface
  SetobjDDBackSurf=objDDPrimSurf.GetAttachedSurface(caps)backbuffersuface建立完成
  
  Surface的部分讲完了,下一篇要说的是如何使用Blt和BltFast来作Surface间的图形的复制和搬移,就可以开始在Surface上画画罗。->

精彩图集

赞助商链接