|
|
发表于 2005-10-29 09:21:00
|
显示全部楼层
Re: directx非全屏模式下如何建立Surface??
Set DDraw = Dx.DirectDrawCreate("")
'设置协议层
DDraw.SetCooperativeLevel Me.hWnd, DDSCL_NORMAL
'建立主页面
With ddsd
.lFlags = DDSD_CAPS
.ddsCaps.lCaps = DDSCAPS_PRIMARYSURFACE
End With
Set DDMainSurface = DDraw.CreateSurface(ddsd)
'建立离屏页面
With ddsd
.lFlags = DDSD_CAPS Or DDSD_WIDTH Or DDSD_HEIGHT
.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN
.lWidth = Width
.lHeight = Height
End With
Set DD_CreateSurface = DDraw.CreateSurface(ddsd)
......................
......................
......................
直接在主页面画图, 或在离屏页面画好后blt 到主页面即可。
如:
Dim r1 As RECT, r2 As RECT
设置r1,r2
.......
Taget_Surface.Blt r1, Source_Surface, r2, DDBLT_KEYSRC Or DDBLT_WAIT
很重要一点: 在blt前要作好裁剪,否则嘿嘿.... |
|