游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2253|回复: 5

directdrawsurface的疑问,谢谢了。

[复制链接]

2

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2004-3-28 19:00:00 | 显示全部楼层 |阅读模式
我在用Directdraw创建一个主页面和一个后背页面,在后备页面中载入800*600的背景图片,然后用



BltFast块传递到主页面上,目的就是显示一个背景画面,每次运行的时候,背景画面一闪而过,然后屏幕



变为黑色,如果在BltFast上加上个循环(无意义循环)就能显示背景,或者之前向主页面调入一次页面(效果依然)然后再调入一次就能显示,这个问题困扰我一天了,希望知道的大虾告诉我怎么解决,谢谢了。


7

主题

203

帖子

203

积分

中级会员

Rank: 3Rank: 3

积分
203
QQ
发表于 2004-3-28 21:19:00 | 显示全部楼层

Re:directdrawsurface的疑问,谢谢了。

给出源码。

2

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
发表于 2004-3-28 21:22:00 | 显示全部楼层

Re:directdrawsurface的疑问,谢谢了。

//循环
{
bltfast到次缓冲;
flip;
}

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20505
发表于 2004-3-29 10:53:00 | 显示全部楼层

Re:directdrawsurface的疑问,谢谢了。

你是全屏的程序吗?

会不会是你的flip把另外空白的背表面翻转上来了?

2

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2004-3-29 12:50:00 | 显示全部楼层

Re:directdrawsurface的疑问,谢谢了。

我的C不好,使用VB编写,原码如下:
Option Explicit

Public Maindx7 As New DirectX7
Public Maindd7 As DirectDraw7
Public Mainsurface As DirectDrawSurface7
Public Backsurface As DirectDrawSurface7
Public DDSDmain As DDSURFACEDESC2
Public DDSDback As DDSURFACEDESC2
Public Mainrect As RECT
Public Backrect As RECT



Public Sub Intddraw()
Set Maindd7 = Maindx7.DirectDrawCreate("")
Call Maindd7.SetCooperativeLevel(gameMain.hWnd, DDSCL_FULLSCREEN Or DDSCL_ALLOWMODEX Or DDSCL_EXCLUSIVE)
Call Maindd7.SetDisplayMode(800, 600, 16, 0, DDSDM_DEFAULT)

DDSDmain.lFlags = DDSD_CAPS
DDSDmain.ddsCaps.lCaps = DDSCAPS_PRIMARYSURFACE
Set Mainsurface = Maindd7.CreateSurface(DDSDmain)

DDSDback.lFlags = DDSD_CAPS Or DDSD_HEIGHT Or DDSD_WIDTH
DDSDback.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN Or DDSCAPS_SYSTEMMEMORY
DDSDback.lWidth = 800
DDSDback.lHeight = 600

Set Backsurface = Maindd7.CreateSurfaceFromFile(App.Path & "\pic\back.bmp", DDSDback)

With Mainrect
   .Top = 0
   .Bottom = 600
   .Left = 0
   .Right = 800
End With
   
With Backrect
  .Top = 0
  .Bottom = 600
  .Left = 0
  .Right = 800
End With

Call Mainsurface.Blt(Mainrect, Backsurface, Backrect, DDBLT_WAIT)


End Sub
背景总是停留不住...

1

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2004-3-29 16:47:00 | 显示全部楼层

Re:directdrawsurface的疑问,谢谢了。

很明显的显示后没有停顿就被刷新了!

所以你的图片一闪而过!

当你加入一个空循环后

程序停在循环不做其他的事,所以你的图形就能停留
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-5-16 09:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表