我想做的事情是这样子:一个人物在地图中间,他走动时保持在屏幕中间,只是地图在移动,地图比较大,所以分割成一块一块小图片,在需要某部分时再行装载,这个装载过程暂时可以不考虑,主要是屏幕输出,我想问,如果直接用gdi来画,用平常的double buffer方法,先在临时bitmap上作图,然后再bitblt到hdc上,这样做行不行?大概一秒钟4帧左右,会不会觉得卡?大家在这方面一般的思路和做法是怎样的?我对directx不熟悉,如果gdi能做得到的话,就直接用gdi了没搞过,请不吝赐教!谢谢!!!
解决方案 »
- 运行提示找不到.Dcu文件是怎么回事
- 我用delphi10,但是却没有sample组件,该怎么办啊?
- activeX 問題 : 網頁中的 javascript 如何調用 ActiveX 中的函數.
- 小问题:在dbgrid中如何使用datetimepicker控件?
- 在线等待高手的解答,很着急!
- DELPHI 6 或7 能开发PDA下的 WINCE程序吗,如果不能,那种程序更DELPHI差别小,谢谢
- 怪事,一条SQL语句在SQL Explorer和SQL7 query analyse中执行良好 ,但在程序中出错
- 谁想改行?谁有好的见议?
- 急,TQUERY有获取最大记录数限制吗,我要得到20多万条,可是只得到19万多就没有了!
- vb的一句代码该如何转换为delphi语句?
- 如何去掉bitbtn的立体边框?
- 为什么用Tdcomconnection组件做C/S客户端连接时,C与S在一台机子上可以,做是把S放在其它机子上时就不能访问了?
http://www.pconline.com.cn/pcedu/empolder/gj/delphi/0401/269462.html
根据鼠标偏移量,调整设口和视口坐标,就可以达到想要的效果。
如果地图很大,就不适合全装进内存,这时就得考虑把地图分割,
用一个队列作缓存,队列里装载相邻的几幅小图,
人物移动时,根据鼠标偏移量,判断可能会用上哪几幅
一时半会用不上的小图就抛弃掉,有可能用上的就预先装载还有,不建议用timer定时重绘,因为有的时候人物可能不行走,或者行走的幅度不大,
没必要定时重绘,最好根据鼠标偏移量调整一下设口和视口坐标
2、闪烁的问题,跟使用GDI、GDI+还是DirectX关系并不大,游戏的制作都应该采用内存缓冲绘图技术:在内存中建离屏画布,把所有需要画的东西都先画上去,然后再到屏幕。
3、通常游戏的刷新率是保持在每秒30帧,不过每秒24帧的刷新率就可以欺骗我们可怜的眼睛了。
>没必要定时重绘,最好根据鼠标偏移量调整一下设口和视口坐标启发很大,多谢了
to yinxu:>补充一下,每秒4帧,只能说明你的代码没有优化,在使用GDI+的情况下,1024*1024的分辨率,
>保持每秒30帧的速度,问题不是很大,而使用GDI应该会更快了。这样我有点信心了,对我鼓励很大,
暂时先丢开作图和输出的问题,我再进一步尝试再问,目前我对这个程序的写法也很模糊,所以还没有作代码,我的情况是这样,我的游戏里有个时间日期的概念,人物移动和时间有关系,比如人物移动100像素,大概就消耗去一天了,时间一过去某些事件可能会触发,其他完成一定任务或行动的人物也会考虑进一步的行动,而且地图上还有其他人物,飞鸟,云雾等,那么是否这样子作,以timer为驱动,然后在timer的事件里作人物状态,行动,位置,事件等的计算,如果有必要更新屏幕的话再输出?
刚刚被领导喊过去和同事讲游戏精灵的技术,结果被云风的Fans 一顿鄙视..我也是用Delphi 的,公司从上到下都比较轻视Delphi.推崇VC.结果不还是Delphi开发的游戏最多,技术含量最好,速度最快.这几天有点郁闷.上来发发闷气...请楼主别见怪...大家有空发帖聊聊Delphi游戏开发技术...适当的时候我也公开游戏代码.
我不是做游戏的,也没看过云风的书,
以前做过一些图像处理类的工作,如有雷同,纯属巧合而已大图分割、缓存、多线程。
在进行一些视觉要求不高应用的时候,
这些也算是比较“传统”的办法,
不停的装载、重绘的确有停顿的问题,
不过,能处理好的话,应该可以把这个问题控制在可以忍受的范围内GDI本身就不是用来开发游戏的,否则MS也不会去搞个DirectX,
所以还是应该根据实际的需求,来决定到底选哪种技术
能实现要求的,就是好技术,实用第一
也许50M的图像可以一次装载,100M、500M的呢?存在就是合理,毕竟很多游戏都不是像魔兽那样“吃”硬件,
在效率和硬件之间找到一个平衡点,这对程序员来说,也算是个挑战
不能一味依赖硬件。
不像我也是写了5\6年的,却还是在寻路.