游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3034|回复: 7

谁知道D3D帖纹理怎么实现色彩键?

[复制链接]

12

主题

30

帖子

30

积分

注册会员

Rank: 2

积分
30
发表于 2007-1-28 14:27:00 | 显示全部楼层 |阅读模式
谁知道D3D帖纹理怎么实现色彩键?我在读纹理的时候设置了色彩键,可帖上的时候色彩键变成黑色了,而不是正常的透明

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2007-1-28 14:36:00 | 显示全部楼层

Re:谁知道D3D帖纹理怎么实现色彩键?

色彩键?

0

主题

275

帖子

676

积分

高级会员

Rank: 4

积分
676
发表于 2007-1-28 15:28:00 | 显示全部楼层

Re:谁知道D3D帖纹理怎么实现色彩键?

Color Key
D3D 是使用alpha channel ????
所以要?定打?AlphaBlend ..?K不是有alpha就???油该

30

主题

126

帖子

126

积分

注册会员

Rank: 2

积分
126
发表于 2007-1-28 15:52:00 | 显示全部楼层

Re:谁知道D3D帖纹理怎么实现色彩键?

这是我前几天学这个找的些资料希望对你有帮助:
什么是alpha通道:
如果图形卡具有32位总线,附加的8位信号就被用来保存不可见的透明度信号以方便处理用,这就是Alpha通道。白色的alpha象素用以定义不透明的彩色象素,而黑色的alpha象素用以定义透明象素,黑白之间的灰阶用来定义半透明象素。
什么是alpha混合:
3D环境中处理的象素在颜色方面他们拥有4个值——RGBA。即红、绿、蓝、Alpha通道。这样不仅方便处理(每个通道8bit,4个通道是32bit。如果b不包含Alpha通道是24bit,24bit数据对于计算机来说处理起来效率较低)。 Alpha通道能够实现象素的透明度变化。而Alpha混合则能在2个物体叠加时重新计算Alpha通道值,使他们的透明度更趋向真实。

另外,呵呵,还需知道怎么做带有alpha通道的文件并设置alpha通道(用PS):
(二)  如何创建alpha通道
使用当前选项创建 Alpha 通道:
1点按“通道”调板底部的“创建新通道”按钮 。新通道将按创建顺序命名。
2使用绘画或编辑工具在图像中绘画。用黑色绘画可添加到通道;用白色绘画可从通道中删除;用较低不透明度或颜色绘画可以较低的透明度添加到通道。
3创建 Alpha 通道并指定选项:
执行下列操作之一:
1)按住 Alt 键 (Windows) 或按住 Option 键 (Mac OS) 并点按调板底部的“创建新通道”按钮 。
2)从“通道”调板菜单中选取“新通道”。
3)为通道键入名称。
4)按照在“快速蒙版”模式中创建临时蒙版 (Photoshop)中更改“快速蒙版”选项过程中步骤 2 至 4 的说明,为通道
5)选择显示选项。Alpha 通道选项与“快速蒙版”选项完全相同。
6)点按“好”按钮。新通道出现在“通道”调板底部,且是图像窗口中唯一的可视通道。
7)点按颜色通道或复合颜色通道旁边的眼睛图标 以显示具有颜色叠加效果的图像。
8)使用绘画或编辑工具在图像中绘画。用黑色绘画可添加到新通道,用白色绘画可从新通道中删除,或用较低的不透明度或颜色绘画则可以较低的透明度向新通道添加。

大概学习例子中的TGA文件都是这么搞出来的吧.望对你有帮助.

30

主题

126

帖子

126

积分

注册会员

Rank: 2

积分
126
发表于 2007-1-28 15:57:00 | 显示全部楼层

Re:谁知道D3D帖纹理怎么实现色彩键?

这是alpha混合用的主要代码:

30

主题

126

帖子

126

积分

注册会员

Rank: 2

积分
126
发表于 2007-1-28 15:58:00 | 显示全部楼层

Re:谁知道D3D帖纹理怎么实现色彩键?


    g_pMyd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE,   TRUE );
    g_pMyd3dDevice->SetRenderState( D3DRS_SRCBLEND,  D3DBLEND_SRCALPHA);
    g_pMyd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

  g_pMyd3dDevice->SetRenderState( D3DRS_ALPHATESTENABLE, TRUE );
  g_pMyd3dDevice->SetRenderState( D3DRS_ALPHAREF,        0x00000001 );
    g_pMyd3dDevice->SetRenderState( D3DRS_ALPHAFUNC,D3DCMP_GREATEREQUAL );

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2007-1-29 11:15:00 | 显示全部楼层

Re:谁知道D3D帖纹理怎么实现色彩键?

前段时间我也提出过这个问题,微软的billbord的例子里面就是用混合的方式实现了退掉黑色底的,我用了那个做法,我建议楼主去看看那个例子里面是怎么 做render blend的

12

主题

30

帖子

30

积分

注册会员

Rank: 2

积分
30
 楼主| 发表于 2007-1-29 18:00:00 | 显示全部楼层

Re:谁知道D3D帖纹理怎么实现色彩键?

按照6楼的方法问题解决,好久没用D3D了,全忘了,感谢gaoxudong,同时也感谢其他楼的朋友
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 10:38

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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