GDI+ 透明那坑爹的效率

iamcomboy 2012-12-27 10:03:47
我在为一个小型2D游戏做界面的绘制,小型游戏你们懂的,用连续N张贴图完成的。
游戏绘制时,分为背景,天气,人物等等林林总总共二三十层,也就是说每一帧大概是至少20来张图的叠加,于是问题来了,当没有需要透明时,它每秒能绘制60帧(我限死最高60),但是当需要进行透明时,每秒勉强十帧啊,我哭了,

// imageAttr.SetColorKey(Color(m_rStart,m_gStart,m_bStart),
// Color(m_rEnd,m_gEnd,m_bEnd),ColorAdjustTypeDefault);
// Graphics graphics(mendc2);
// graphics.DrawImage(pImage, destRect,0 , 0,
// pImage->GetWidth() ,
// pImage->GetHeight() , UnitPixel,
// &imageAttr, NULL,NULL);

放上绘制代码,求别的能够高效的。
...全文
255 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 8 楼 iamcomboy 的回复:
引用 7 楼 tiger9991 的回复:本来就不建议纯用GDI,当初就是建议混用 尝试CImage看看呢? 不行,只要透明,通通达不到效率要求,看来只能尝试胡老大所说用ddraw了。
那就用cximage+png来处理,这个效果比较 好。
向立天 2013-04-09
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
iamcomboy 2012-12-28
  • 打赏
  • 举报
回复
引用 7 楼 tiger9991 的回复:
本来就不建议纯用GDI,当初就是建议混用 尝试CImage看看呢?
不行,只要透明,通通达不到效率要求,看来只能尝试胡老大所说用ddraw了。
redui 2012-12-27
  • 打赏
  • 举报
回复
双缓存只能解决闪烁的问题,不能解决效率问题,这么多层次,得累死GDI+。建议使用DIRECTDRAW,透明+贴图是它的强项
sumos 2012-12-27
  • 打赏
  • 举报
回复
你用了双缓存没? 我记得之前有一位高手这么做的,用gdi+把png转换到CBitmap中再用gdi来绘制。
傻X 2012-12-27
  • 打赏
  • 举报
回复
建议换GDI用Transparent来看看效率. GDI就缺乏抗锯齿的特效
傻X 2012-12-27
  • 打赏
  • 举报
回复
本来就不建议纯用GDI,当初就是建议混用 尝试CImage看看呢?
iamcomboy 2012-12-27
  • 打赏
  • 举报
回复
引用 1 楼 tiger9991 的回复:
建议换GDI用Transparent来看看效率. GDI就缺乏抗锯齿的特效
另一个我所有资源都是png与jpg等,我当时是GDI、GDI+混用,纯GDI不现实
iamcomboy 2012-12-27
  • 打赏
  • 举报
回复
引用 3 楼 redui 的回复:
双缓存只能解决闪烁的问题,不能解决效率问题,这么多层次,得累死GDI+。建议使用DIRECTDRAW,透明+贴图是它的强项
我想试下libpng,大侠觉得怎么样?
iamcomboy 2012-12-27
  • 打赏
  • 举报
回复
引用 1 楼 tiger9991 的回复:
建议换GDI用Transparent来看看效率. GDI就缺乏抗锯齿的特效
试过了,不行,若资源转成bmp效率不高。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧