游戏开发论坛

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

请问DDraw中IdirectDrawGammaControl对象如何与表面关联起来?

[复制链接]

3

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2008-1-15 15:13:00 | 显示全部楼层 |阅读模式
  在使用裁减器的时候,有IDirectDrawSurface4::SetClipper(LPDIRECTDRAWCLIPPER lpDDClipper)可以将一个裁减器对象与一个表面关联起来.
  那gamma control对象也是要和一个表面(并且只能是主表面)关联起来的吗?
  用什么方法关联呢?


附上ddraw手册中关于gamma control 的部分描述:
"什么是Gamma及色彩控制
通过Gamma及色彩界面,DirectDrawSurface对象能改变系统如何在平面上显示图形,而无须改变平面本身。你可以想象这些控制为非常简单的过滤,DirectDraw在数据从平面被绘制到平面时改变它。平面对象通过IDirectDrawGammaControl及IDirectDrawColorControl界面来调整平面内容如何被过滤。你可以通过IUnknown:ueryInterface宏来获得目标的指针,来指定IID_IDirectDrawGammaControl或IID_IDirectDrawColorControl关联标识符。

Gamma控制,是通过IDirectDrawGammaControl界面,使你可以动态改变系统显示平面的单独的红,绿,蓝层次(阶)图。通过设置Gamma层次,你可以当人物在射击时使使用者的屏幕突然变红,或在拣起什么新物品时变绿,等等,无需Blit新图象到帧缓冲而完成特效。或者,你可能调整色彩层次来和帧缓冲中的图象混合。尽管这个界面和色彩控制非常相似,而这是更简单的,是游戏程序最好的选择。详见使用Gamma控制。

IDirectDrawColorControl界面允许你控制平面色彩,更像你在电视上看到的色彩控制。 IDirectDrawColorControl与TV控制相似之处是没有错误-- 这个界面更适合来调整一个重叠平面的视频播放效果,这种情况看上去更像控制多余色。你可以使用色彩控制来允许使用者改变一些图形特性如色调,饱和度,对比,及其他特性。详见使用色彩控制。

使用Gamma控制

IDirectDrawGammaControl界面,你可以通过查询平面来获得并设置 IID_IDirectDrawGammaControl关联标识符,允许你在显示卡将数据传递到数字模拟转换器 (Digital-to-analog converter DAC)前通过斜面层次来操作平面像素的红,绿,蓝值。虽然所有的平面类型都支持IDirectDrawGammaControl界面,但你只能被允许调整主平面的Gamma。尝试在其他非主平面调用 IDirectDrawGammaControl::GetGammaRamp或IDirectDrawGammaControl::SetGammaRamp都将失败。

  abc

16

主题

280

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
QQ
发表于 2008-1-15 16:40:00 | 显示全部楼层

Re:请问DDraw中IdirectDrawGammaControl对象如何与表面关联起来?

主表面的QueryInterface,需要硬件支持。
IDirectDraw7::GetCaps(LPDDCAPS,LPDDCAPS);//hal,hel
hal.ddsCaps & DDCAPS2_PRIMARYGAMMA ;
论坛有一篇“使用DirectDraw的Gamma控制形成淡出效果”http://dev.gameres.com/Program/Visual/2D/Gamma.htm
还有很多。。。

3

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2008-1-15 18:01:00 | 显示全部楼层

Re:请问DDraw中IdirectDrawGammaControl对象如何与表面关联起来?

多谢CuriousZhen!

lpddsprimary->QueryInterface(IID_IDirectDrawGammaControl,(void **)& lpDDGammaControl);

这一句查询主表面是否支持gamma控制.是否意味着如果查询成功的话(支持),返回的lpDDGammaControl就是一个gamma control 对象的指针,主表面就和lpDDGammaControl对象关联起来了?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-19 21:46

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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