游戏开发论坛

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

[DX9]谁可以设置一个带有半透明色的png图片的透明度?

[复制链接]

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
发表于 2010-9-13 01:04:00 | 显示全部楼层 |阅读模式
问题:一个含有半透明色的png格式图片,要求以100的透明度渲染出来。(固定管道)

这问题可不简单喔。 [em9]

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
 楼主| 发表于 2010-9-13 19:45:00 | 显示全部楼层

Re:[DX9]谁可以设置一个带有半透明色的png图片的透明度?

解决了:
完整的设置如下
C/C++ code
    pd3dDevice->SetRenderState(D3DRS_LIGHTING,FALSE);
    pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,TRUE);
    pd3dDevice->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
    pd3dDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);

    pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);

//使定点颜色的alpha和帖图的alpha相乘
    pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
    pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);

    pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);



C/C++ code
顶点里面的diffuse含有aphpha分量
struct Custom_Vertex
{
    D3DXVECTOR4 pos_rhw;
    D3DCOLOR diffuse;
    D3DXVECTOR2 uv;
};
const DWORD fvf = D3DFVF_XYZRHW|D3DFVF_DIFFUSE|D3DFVF_TEX1;

Custom_Vertex verts[] =
{
    {D3DXVECTOR4(0.0f,300.0f,0.0f,1.0), D3DCOLOR_ARGB(125,255,255,255) ,D3DXVECTOR2(0.0,1.0)},
    {D3DXVECTOR4(0.0f,0.0f,0.0f,1.0), D3DCOLOR_ARGB(125,255,255,255) ,D3DXVECTOR2(0.0,0.0)},   
    {D3DXVECTOR4(400.0f,0.0f,0.0f,1.0), D3DCOLOR_ARGB(125,255,255,255) ,D3DXVECTOR2(1.0,0.0)},
    {D3DXVECTOR4(0.0f,300.0f,0.0f,1.0), D3DCOLOR_ARGB(125,255,255,255) ,D3DXVECTOR2(0.0,1.0)},
    {D3DXVECTOR4(400.0f,0.0f,0.0f,1.0), D3DCOLOR_ARGB(125,255,255,255) ,D3DXVECTOR2(1.0,0.0)},   
    {D3DXVECTOR4(400.0f,300.0f,0.0f,1.0), D3DCOLOR_ARGB(125,255,255,255) ,D3DXVECTOR2(1.0,1.0)}
};


修改这个alpha可以指定透明度。


对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:现征集自愿测试者,测试我们的一个在线培训系统,有愿意参加的请按照下面格式填写信息

xingzhe2001

(行者)

等 级:
9
#3楼 得分:0回复于:2010-09-13 14:18:42如果你的颜色要频繁修改,建议用这个
C/C++ code
//这个颜色就会和你的纹理混合
        pd3dDevice->SetTextureStageState(0, D3DTSS_CONSTANT, D3DCOLOR_ARGB(128,256,256,256));
    pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
    pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_CONSTANT);

    pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);


---xingzhe2001

1

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
发表于 2010-9-20 21:43:00 | 显示全部楼层

Re:[DX9]谁可以设置一个带有半透明色的png图片的透明度?

用AlphaTest应该更好点吧.........

67

主题

390

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
 楼主| 发表于 2010-9-22 22:34:00 | 显示全部楼层

Re: Re:[DX9]谁可以设置一个带有半透明色的png图片的透明度?

emughost: Re:[DX9]谁可以设置一个带有半透明色的png图片的透明度?

用AlphaTest应该更好点吧.........


我问的不是这个。

4

主题

14

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2010-9-26 07:09:00 | 显示全部楼层

Re:[DX9]谁可以设置一个带有半透明色的png图片的透明度?

我认为可以在顶点上设定顶点的alpha值为0,然后渲染图片时,设定alpha的来源为顶点颜色,这样应该可以达到目的~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-4 23:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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