游戏开发论坛

 找回密码
 立即注册
搜索
楼主: 怪盗基德

16位色全屏模式为什么能完好地显示24位BMP

[复制链接]

7

主题

58

帖子

58

积分

注册会员

Rank: 2

积分
58
QQ
发表于 2006-7-5 06:27:00 | 显示全部楼层

Re:16位色全屏模式为什么能完好地显示24位BMP

支持楼上的,怀疑楼主确实在32位模式下,或者24位模式

97

主题

590

帖子

590

积分

高级会员

Rank: 4

积分
590
QQ
 楼主| 发表于 2006-7-5 09:06:00 | 显示全部楼层

Re: Re:16位色全屏模式为什么能完好地显示24位BMP

true_yang: Re:16位色全屏模式为什么能完好地显示24位BMP

支持楼上的,怀疑楼主确实在32位模式下,或者24位模式

你是说WINDOWS下的吗?我看过了,是1024*768  16位色的,不是32或24位的




sf_2006759617.gif

7

主题

58

帖子

58

积分

注册会员

Rank: 2

积分
58
QQ
发表于 2006-7-5 13:24:00 | 显示全部楼层

Re:16位色全屏模式为什么能完好地显示24位BMP

您程序独占显示设备时候的位

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2006-7-5 13:26:00 | 显示全部楼层

Re:16位色全屏模式为什么能完好地显示24位BMP

你是怎么载入图片呢,是用API还是自己写?
24位采用565直接到16位会有失真,用windows API显示会有问题(在窗口模式下),但如果全屏直接写屏就是正确的
LZ可以把图片发上来,把你的部分程序贴出来看看?

97

主题

590

帖子

590

积分

高级会员

Rank: 4

积分
590
QQ
 楼主| 发表于 2006-7-5 18:59:00 | 显示全部楼层

Re:16位色全屏模式为什么能完好地显示24位BMP

用DDRAW,独占模式,全屏,16位色

bitmap=(HBITMAP)LoadImage(NULL,dir,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
然后把它放到一个hdc,再选进一个LPDIRECTDRAWSURFACE7里,最终是对这个surface操作的

7

主题

58

帖子

58

积分

注册会员

Rank: 2

积分
58
QQ
发表于 2006-7-5 19:26:00 | 显示全部楼层

Re:16位色全屏模式为什么能完好地显示24位BMP

:>
伪代码
从24位图读象素pixel_24
把它分解为r_8,g_8,b_8,
r_5=r_8>>3,g_6=g_8>>2,b_5=b_8>>3 ,
之后pixel_16=(r_5&31)<<11+(g_6&63)<<5+b_8;
得到16位象素
随手写的伪代码,不经意总出些错,检查一遍,通过.不过我在实际应用是这样做的,知道有些问题....<<最后的冲击>>,您看看吧那些24位bmp都是这样转的,好象能说过去啊!动手写个吧:>呵呵,有更好的别忘了告诉我啊

36

主题

382

帖子

498

积分

中级会员

Rank: 3Rank: 3

积分
498
发表于 2006-7-5 20:36:00 | 显示全部楼层

Re:16位色全屏模式为什么能完好地显示24位BMP

你设置的是16位,那就是16的。
图形格式不符会自动的帮你转换。
一般是会线性过滤的,所以看起来好像差不多。
但是如果色阶差太多,还是能看出来的。

97

主题

590

帖子

590

积分

高级会员

Rank: 4

积分
590
QQ
 楼主| 发表于 2006-7-5 22:03:00 | 显示全部楼层

Re: Re:16位色全屏模式为什么能完好地显示24位BMP

true_yang: Re:16位色全屏模式为什么能完好地显示24位BMP

:>
伪代码
从24位图读象素pixel_24
把它分解为r_8,g_8,b_8,
r_5=r_8>>3,g_6=g_8>>2,b_...

可是在画图程序的颜色调色板里,你可以去试试,16位色显示出来的大多都是暗黑色,范围在RGB(31,63,31),那我在我16位的游戏里看到的淡亮色又是从哪来的? [em4]

18

主题

92

帖子

92

积分

注册会员

Rank: 2

积分
92
发表于 2006-7-5 22:28:00 | 显示全部楼层

Re:16位色全屏模式为什么能完好地显示24位BMP

用GDI载入位图会做颜色转换,所以24位的BMP到16位的表面可以正常显示
画笔里的RGB都是0-255的,所以都很黑

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2006-7-6 13:03:00 | 显示全部楼层

Re:16位色全屏模式为什么能完好地显示24位BMP

LoadImage函数本身已经将图转为16位色了,这个转化我认为已经进行了一些处理算法,如抖动,滤波等,自己写转化算法如转为565格式也可以,但似乎只能用自己的显示算法才能正确显示(如直接写屏),反正就是要么都用GDI,要么都自己做,这样搭配似乎才行。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 21:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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