|

楼主 |
发表于 2004-6-17 17:09:00
|
显示全部楼层
这是我在"中国游戏开发者"的讨论,望 站长 给点
叶风:
求助游戏GUI设计的技巧和框架...
求助游戏GUI设计的技巧和框架...
有游戏GUI(窗口系统)的朋友,请抬抬贵手...
讲一下您设计GUI的过程和感受...
King_jinjing 版主:
就类似于WINDOW编程。你去响应对应的消息就是了。
叶风:
我想得到更加细致的回复
我自己已经可以完成
按钮..
窗口...
的封装,我想知道你的办法,比如如何传递消息,得到消息后,
如何处理,如何更加易于调用.
King_jinjing 版主:
你可以去了解一下WINDOWS的消息机制。
准确的说,我还没有做过。
叶风:
了解?
我已经自己定义了消息机制.
只是不知道怎样才能够更好的发挥.
比如.
"消息"通过谁来传递.有没有必要放在一个钩子函数中,或者单独开一个线程.
对"消息的处理" 和 "游戏显示时的帧"的关系如何处理,
1.在处理消息时,不考虑游戏的显示问题,接到消息就在后台处理,
...
King_jinjing 版主:
基本上,没有必要另外开线程。这个消息处理瞬间就能完成的。游戏显示只是反应消息处理的结果。
叶风:
我的意思是...
消息到来的时候,游戏还没有再次的显示,比如 "1/30 " 秒刷新一次显示屏幕,但是,在游戏还没有进入下一次刷新的时候,也就是说在两次刷新期间,来了几个消息,那么,是等到下一次刷新是处理呢,还是,接到消息之后就处理??
King_jinjing 版主:
你应该有一个时间段的划分吧?比如,1/30到2/30之间的时间差,这个时间差是属于2/30的处理范围。
叶风:
是否分开处理...
我是这样想的,将游戏的消息处理和游戏的显示分开.
也就是说:游戏的显示并不管窗口系统中的消息,他只是
到了该显示的时候直接调用窗口系统的显示模块,
至于用户做了什么,由消息系统处理,当然处理的同时
调用各个窗口的回掉函数来处理用户的操作.
我做这个窗口系统的目标就是,能够即时的响应用户操作.
因为游戏的显示,并不象windows GUI 一样,能在接到绘图的消息
时直接操作画面.
King_jinjing 版主:
..........
WINDOWS也是得到消息后再绘制的。
你也可以跟WINDOWS一样,只更新某个区域。
固定每秒三十帧的理想情况,只是在2D游戏里出现。而3D游戏,是不停的刷新的,可能每秒几百帧都有。
你只需要用平常心去实现就行了。
叶风:
不知道该说什么了
我希望能够得到你们的实践性的见解.
谢谢帮助.
King_jinjing 版主:
这样说吧。
你可以学WINDOWS的,得到消息后,要求更新时,追加刷新一次。
叶风:
不错的主意..
这样一来,就可以即时更新,更新时在用上"只更新某一片"的方法,
就可以了.也就是说使用类似 wm_paint 的机制,但是,有可能遇到
"窗口是半透明"的情况,这时候 wm_paint 一样的做,是否还可行呢?
|
|