Symbian多平台游戏引擎开发日记 2006-5-22

原创 2006年05月22日 11:22:00
         上周完成了部分TG_Display、TG_2DSurface、TG_Texture的方法,TG_Display用Create2DSurface来创建一个离屏缓存,UpdateScreen方法把TG_2DSurface的图象翻转到屏幕上。翻转方法直接使用NOKIA提供的方法,大致如下:
 switch( drawBuffer )
 {
 case 0://BitmapCopy
  {
   iGc.BitBlt( TPoint( 0,0 ), iPrimarySurface->GetFbsBitmap() );
   break;
  }
 case 1://DoubleBuffered
  {
   TInt numPixels = iScreenSize.iWidth * iScreenSize.iHeight;
   Mem::Copy( iSrnAdd, iPrimarySurface->iFbsBitmapBuffer->DataAddress(), numPixels * 2 );
   break;
  }
 }
这个方法提供了两种屏幕翻转的方法,其中BitmapCopy方法是通过屏幕服务翻转到屏幕上,DoubleBuffered是直接取得屏幕显存的地址,然后把图象数据直接复制到显存中,当然这种方式只能用在真机上,不能在模拟器上使用。在这两种方法中,理论上说第二种方法可能更快些,不过我没有测试过。
         TG_2DSurface提供Lock,Unlock方法防止在往上面绘图的时候内存移动位置。BitBlt方法把TG_Texture图象复制到TG_2DSurface指定的位置。TG_2DSurface的核心数据是CFbsBitmap,创建TG_2DSurface时,显示模式必须与屏幕相同,不能创建屏幕显示模式之外的CFbsBitmap对象,BitBlt在实现时需要注意显示模式的匹配。目前主要用到EColor4K(12位色屏幕)、EColor64K(16位色屏幕)、EColor16M(24位色屏幕),12位色屏幕为444模式,16位色为565模式,24位色屏幕为888模式。另外,每次向TG_2DSurface中绘制图片时,都要通过DataAddress方法重新获得CFbsBitmap的内存地址,否则在绘制时会出现指针位置错位的情况。TG_Texture目前还只能载入24位色BMP点阵位图,在载入时将每个象素转化为与屏幕显示模式相同的象素值,转换方法如下:
#define CONVERT16MTO4K(color)  (  ((color) & 0xF0)  >>  4 ) |  ((( (color) & 0xF000) >> 8) & 0xF0) | ((((color) & 0xF00000) >> 12) & 0xF00)
#define CONVERT16MTO64K(color)  (  ((color) & 0xF8)  >>  3 ) |  ((( (color) & 0xFC00) >> 5) & 0x7E0) | ((((color) & 0xF80000) >> 8) & 0xF800)
         接下来要继续完善TG_2DSurface绘制TG_Texture时的各种效果,比如关键色、alpha混合、带alpha通道的图片混合,同时还要区分16位色和32位色的区别,以及TG_Texture载入256色的索引位图,还将要添加TG_Palette来管理调色板。

相关文章推荐

【Cocos2d-x游戏引擎开发笔记(22)】TexturePacker的使用

原创文章,转载请标明出处:http://blog.csdn.net/zhy_cheng/article/details/8680931。 首先要解释一下,为什么要使用TexturePacker? ...

X-Canvas是一款跨平台的HTML5游戏引擎

X-Canvas是一款跨平台的HTML5游戏引擎,提供手机游戏开发的完整解决方案。包含了加速引擎,游戏框架,物理引擎。提供了100%的JavaScript开发接口,经过OpenGL硬件加速的Canva...
  • bjash
  • bjash
  • 2013年04月10日 22:50
  • 968

Symbian s60 3rd 2D游戏引擎

  • 2008年09月09日 16:43
  • 349KB
  • 下载

3D游戏引擎编程part22of31

  • 2008年07月15日 16:08
  • 8.58MB
  • 下载

千百万Java开发者的福音:跨平台Cocos2d-Java游戏引擎诞生

跨平台Cocos2d-Java游戏引擎以及配套的CocosEditor2.0游戏开发工具终于诞生了。使用Java语言来开发Cocos2d跨平台游戏, 和-lua,-js 的风格相近API,毋庸置疑,这...

跨平台游戏引擎开发

目前移动平台开发涉及Andoird,ios,windows-phone,blackberry等多个平台,每个平台的开发接口都不同,同一款游戏要想部署到不同平台需要大量的重复劳动,严重影响开发成本,跨平...

支持多平台的2D和3D游戏引擎Godot开源

一直以来,Godot是一款内部使用的游戏引擎,可用于PC端、移动端、主机以及web平台游戏开发。在上个月,开发商基于MIT许可开源了该游戏引擎。Godot经过Juan Linietsky和Ariel ...

3D游戏引擎StingRay:支持实时多平台研发

欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,【狗刨学习网】unity极致学院,致力于打造业内u...

开发H5游戏引擎的选择:Egret或Laya?

一、H5游戏开发的引擎介绍开发H5游戏的引擎有很多,比如egret、laya、cocos-js等等。这里主要是分析的是egret和laya,因为我们团队是从as3转过来的。所以天然地在有as3基因的e...
  • sujun10
  • sujun10
  • 2017年06月01日 22:20
  • 8538

25 个超棒的 HTML5 & JavaScript 游戏引擎开发库

作者:ejinxian 就像在汽车中,引擎完成主要的工作,使汽车看起来不可思议。游戏引擎同理,游戏开发者完成细节的工作,使游戏看起来真实、吸引人眼球。游戏引擎负责其余的事情。早期,游戏开发者通常从草...
  • dj0379
  • dj0379
  • 2016年07月19日 23:16
  • 10915
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Symbian多平台游戏引擎开发日记 2006-5-22
举报原因:
原因补充:

(最多只允许输入30个字)