游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2057|回复: 4

DirectDraw的问题!!!!!

[复制链接]

26

主题

39

帖子

78

积分

注册会员

Rank: 2

积分
78
发表于 2008-6-7 21:40:00 | 显示全部楼层 |阅读模式
DirectDraw创建表面时,表面的数据跟系统颜色位数有关,载入一个16位的图象还要分8位,16位,24位,32位这几种情况转换 ,   (而且当你创建好表面后,你改变系统颜色位数,图象就无法显示)   ,玩连连看的时候没有这个问题

我想知道这个问题怎么解决?(打括号的那一个问题)



还想知道  8,16,24,32位的图象相互之间是怎么转的?


                                                                  请高手帮忙!
                                                                           
                                                                  新一

86

主题

2251

帖子

2386

积分

金牌会员

Rank: 6Rank: 6

积分
2386
QQ
发表于 2008-6-8 21:22:00 | 显示全部楼层

Re:DirectDraw的问题!!!!!

你问算法么?本站文档区的2D部分应该有这类文章。
DirectDraw的blit好像支持转化吧,不清楚,DirectDraw的硬件加速不是很好,不如CPU软加速来得灵活。
实际上很多人只在后备缓冲绘制完毕时做这个转化,而不改变系统色位(窗口模式、伪全屏时)。

26

主题

39

帖子

78

积分

注册会员

Rank: 2

积分
78
 楼主| 发表于 2008-6-9 22:10:00 | 显示全部楼层

Re: DirectDraw的问题!!!!!

知道  8,16,24,32 位的图像 相互之间怎么转吗

3

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2008-6-10 09:02:00 | 显示全部楼层

Re: DirectDraw的问题!!!!!

我只知道如何将24位转成32位,使用一个宏就可以做到:

#define _RGB32(a,r,g,b) ((b) + ((g) << 8) + ((r) << 16) + ((a) << 24))

使用时候,对于24位的颜色,就凑8位alpha值,全取0即可。

BITE red=?,green=?,blue=? //一个颜色一字节,故为BITE或unsigned char型

DWORD pixel = _RGB32(0,red,green,blue); //一个像素4字节,故为DWORD型

12

主题

128

帖子

128

积分

注册会员

Rank: 2

积分
128
发表于 2008-6-11 16:50:00 | 显示全部楼层

Re:DirectDraw的问题!!!!!

在程序初始化的时候查询显示信息
不要写死
不过只有窗口程序才会用到.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 07:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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