如何用DIB正确显示32位tga图象?

leoleo 2000-05-25 12:07:00
如何在vc++客户区用DIB正确显示32位tga图象,
是256级透明度,alpha值应如何处理?
e-mail:leoury@hotmail.com
...全文
151 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sanhan 2000-05-28
  • 打赏
  • 举报
回复
要想速度快,查表的比较好。
通过DDraw可以利用硬件的alpha支持,速度会很快。
很多3D加速卡都支持。
spe 2000-05-27
  • 打赏
  • 举报
回复
Alpha值按前景与背景的rgb各占百分率计算。
当前景的rgb为r1,g1,b1、背景的rgb为r2,g2,b2、Alpha值为a时(256级),应当显示的色彩的rgb为:
r = (r1 * a + r2 * (255 - a))/255;
g = (g1 * a + g2 * (255 - a))/255;
b = (b1 * a + b2 * (255 - a))/255;
就是说当Alpha值为255时,只显示前景色,当Alpha值为0时,只显示背景色(前景透明),不过这个运算量极大,需要对图象的每个点的前景背景进行一次上述运算,如果需要高速,建议把255近似为256,用移位运算代替除法,最好写成汇编。
sanhan 2000-05-25
  • 打赏
  • 举报
回复
alpha很麻烦,挂DDraw可以。

8,301

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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