游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2175|回复: 2

请教:在16bit色深下如何显示256色位图失真最小?

[复制链接]

4

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
发表于 2004-5-6 14:50:00 | 显示全部楼层 |阅读模式
16bit为565格式时,我这样转换:
pal为256色位图中的调色板信息(RGBQUAD格式)
DWORD blue   = pal.rgbBlue >> 3;
DWORD green = pal.rgbGreen>> 2;
DWORD red     = pal.rgbRed >> 3;
colorValue = (blue&0x1F) + ((green&0x3F)<<5) + ((red&0x1F)<<11);
显示好像色彩失真很大。

如果取各颜色最大值,再进行归一化,好像也是失真很大。
有没有简单的方法,可以使得失真最小啊?我看了WINDOWS本身在16bit色深下处理256色位图,色彩完全没有问题的。

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20527
发表于 2004-5-7 10:23:00 | 显示全部楼层

Re:请教:在16bit色深下如何显示256色位图失真最小?

可以采用图像抖动算法处理,当然,这个算法还挺麻烦的。
建议可以通过一些做图软体先将资源转换成256,然后再载入使用,这样还能减少图形资源占用磁碟的量。

1

主题

10

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2004-5-7 11:58:00 | 显示全部楼层

Re: 请教:在16bit色深下如何显示256色位图失真最小?

#define RGBto565(r,g,b) (((WORD)r<<8)&0xf800)|(((WORD)g<<3)&0x07e0)|((WORD)b>>3)

colorvalue = RGBto565(pal.rgbRed, pal.rgbGreen, pal.rgbBlue);
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-30 19:12

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表