浏览 7477 次
锁定老帖子 主题:关于j2me game双缓冲实现探讨
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-11-29
在midp1.0中,api中并没有game这个包,看到网上很多人在讨论设计游戏的时候会出现图片断裂,屏幕闪烁等问题。 我经过这几天的学习整理下自己的学习心得,用来抛砖,希望对此有研究高手们相互讨论。让我也学习学习。 双缓冲的原理可以这样形象的理解:把电脑屏幕看作一块黑板。首先我们在内存环境中建立一个“虚拟“的黑板,然后在这块黑板上绘制复杂的图形,等图形全部绘 制完毕的时候,再一次性的把内存中绘制好的图形“拷贝”到另一块黑板(屏幕)上。采取这种方法可以提高绘图速度,极大的改善绘图效果。 对于手机来说。具体的过程就是通过extends Canvas。然后获取bufferImage。再然后就getGraphics。最后就是在这个graphics中绘制图片等,再最后就是把这个绘制好的bufferImage绘制的屏幕上。 说归说。具体还是要看代码的。里面的代码参照了一些开源的代码。 java 代码
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-11-29
图形绘制方面还有一个叫"翻页"技术,是开辟了2块缓冲区,交替绘制,不过对于J2ME来说内存是个问题,所以很少使用
|
|
返回顶楼 | |
发表时间:2006-11-29
而起如果采用这样的技术的话,会不会造成得不尝失呢。
|
|
返回顶楼 | |
发表时间:2006-11-29
wuhua 写道 而起如果采用这样的技术的话,会不会造成得不尝失呢。 如果是二重缓冲,一半来讲不会有过大的负担,整个二重缓冲的实现,在J2ME中最慢的应该是
Image.createImage(width, height); 其他的到没什么,而且对于游戏来说,帧率不要求太高,能保持在12帧就可以了 |
|
返回顶楼 | |
发表时间:2006-11-29
whycloud 写道 wuhua 写道 而起如果采用这样的技术的话,会不会造成得不尝失呢。
如果是二重缓冲,一半来讲不会有过大的负担,整个二重缓冲的实现,在J2ME中最慢的应该是
Image.createImage(width, height); 其他的到没什么,而且对于游戏来说,帧率不要求太高,能保持在12帧就可以了 兄弟讨论的不错。对了,你有没有具体研究关于两个物体碰撞。 我知道有个方法是位置的检测。这对于非透明跟效果不要求很真实的来说是可以接收的。 但如果要求效果很真实,就就需要真实像素检测。请问有没相关的实现,或者想法。 虽然game Sprite类已有相关实现,但我还是想了解下。 |
|
返回顶楼 | |
发表时间:2006-11-29
碰撞检测,在2d游戏中一般情况都是采用位置检测,假设一个精灵12*12的话可以把精灵考虑成12*12的正方形检测,或者是半径6的圆来检测
一般在飞机类游戏是采用后者,这样计算子弹和飞机中心的距离平方小于一个值的时候就认为发生碰撞,而这个距离可以采用勾股定理直接得到。 另外可以将真个游戏画面划分成N个区域,只检测可能发生碰撞的精灵内的部分 例如在飞机游戏中,敌人的子弹和player的飞机,检测过程中,遍历和飞机在一个区域的子弹精灵就可以了。这样可以减少检验过程中的运算量。 如果是横版游戏,一般都是采用正方形的检测 其实像素不是非常大,就没有必要精确到像素检验了 如果是3d碰撞就要稍微的复杂了。到现在一直都没具体时间整理,上次我写的那个3d教程碰撞检测的后半部分 |
|
返回顶楼 | |
发表时间:2007-03-05
事实上很多机器本身就实现了双缓冲
再缓冲一次意义不大 |
|
返回顶楼 | |