注册 登录
编程论坛 C图形专区

刷新有问题?眼睛弄坏怎么办?

蔡蔡 发布于 2007-07-01 23:10, 894 次点击
用画图函数画一些会动的图形是不是不停的刷新屏幕和画图形,
但是这样屏幕会很闪,眼睛都受不了了,怎么办呢?
请高手教一下~
4 回复
#2
jig2007-07-01 23:26

这个就是图形编程的关键,也是图形编程方面一个需达到的终极技能。

只有让你的绘制速度快起来,你自己写的图形开发包,游戏引擎才能合格。这个也就是为什么有这么多人研究第三方图形开发包的其中一个原因。

至于怎么做,那有很多手段。包括对硬件的了解,从硬件角度考虑优化。再就是代码控制能力,在高层建筑实现高速度,这两个方面缺一不可。

前者要求大家对硬件要有相当的认识,这个需要知识的积累自己去找资料看。后者就是所谓在做图形引擎或游戏开发包的时候需要从宏观架构上来做优化。

达到这个目的需要一定时间不是一两天就能成的,要有耐心和恒心。

#3
蔡蔡2007-07-02 11:17

我晕死了~~~斑竹你说的太遥远了吧~
我只是想屏幕不要闪得那么厉害~
你说的那些对我来说真的是太遥远了,
我只是个菜鸟呀

#4
RockCarry2007-07-02 12:49
关于动画绘制出现闪烁的问题,我以前就有文章讨论过,好像是在VCOK上,记不清楚了。
消除闪烁的关键并不在于提高速度,我曾经指出过产生闪烁的根本原因在于图像画面的突变。从人的视觉上来讲,绘制一幅画面(A),在将屏幕清除,在绘制一个新的画面(B),这期间人眼的感觉其实是看到了3幅画面,一幅是A,第二幅是清除屏幕时造成的黑屏,第三幅是B。这个过程中,画面是存在突变的,也就是说是不连续的变化。不闪烁的动画效果,多是由连续变化的画面组成的。

可以采用的办法很多,局部擦除,双缓冲等都可以做到。所谓双缓冲,其实只是一种手段,它可以使人眼看不到图形绘制的过程,来消除闪烁。也就是将绘制的过程放在backbuf中进行,而将绘制的结果显示给人眼。如前例,如果将清楚屏幕和绘制B图都放在backbuf中进行,就可以使人眼只看到A和B两幅图,从而消除了画面上的突变,在人眼的感觉上就没有了闪烁。

需要指出的是闪烁的根本在于画面的突变,而不在于采用了何种技术,就算你采用了双缓冲技术,但是最终呈现给人眼的绘制结果本身就是存在画面突变的,那么仍然不可避免的会产生闪烁。闪烁也与程序的速度无关,从本质上讲,显示器本身就是能保证每秒50帧以上的刷新率。因此记住最本质的东西,所谓动画就是连续变化的一组画面,闪烁的根源在于画面的突变。



#5
蔡蔡2007-07-02 17:25
谢谢你们.但是,这些我还是不大懂
例如那个缓冲,也是不懂,没想到消除闪烁还有这么大的学问呀~
看来我的路还很长
1