游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6763|回复: 13

关于alphablend的透明的一点疑问,

[复制链接]

24

主题

94

帖子

96

积分

注册会员

Rank: 2

积分
96
发表于 2005-7-16 16:21:00 | 显示全部楼层 |阅读模式
今天主要是为了解决这个问题,结果花了半天在纹理上(见另外一帖)

我想通过是用TGA的图片来达到去底色(比如黑色)同时可以实现ALPHA混合的效果,但是不尽人意的是我始终只能2者取一,不过以前曾试成功过一次,但是没有搞的很明白,这次算是特地想搞搞清除,

前面设定了相关的alpha设置代码。。。

关于我的渲染部分的代码:
// -- 纹理 -- //
m_pd3dDevice->SetTexture( 0, m_pTexture );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_ADD);

以下部分是目前的办法,就是如果不要ALPHA渲染的话就跳过
// -- alpha渲染 -- //
if ( sprite->m_blend )
{
m_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
m_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE);
}

// -- 物体反射效果 -- //
m_pd3dDevice->SetMaterial ( &m_material ) ; 用了灯光所以添加这个语句

看得出我目前只能是2者选一啊,或者哪里有问题,或者有没有更好地做法呢?

谢谢帮忙^^

24

主题

94

帖子

96

积分

注册会员

Rank: 2

积分
96
 楼主| 发表于 2005-7-17 00:02:00 | 显示全部楼层

Re:关于alphablend的透明的一点疑问,

没有人知道还是不屑于回复呢?

2

主题

48

帖子

50

积分

注册会员

Rank: 2

积分
50
发表于 2005-7-17 12:40:00 | 显示全部楼层

Re:关于alphablend的透明的一点疑问,

没看明白
你要什么效果?哪两者?
不是已经可以alpha混合了吗

2

主题

48

帖子

50

积分

注册会员

Rank: 2

积分
50
发表于 2005-7-17 12:47:00 | 显示全部楼层

Re:关于alphablend的透明的一点疑问,

使用自带alpha通道的图片实现混合比较好,d3d没有color key的功能

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2005-7-17 19:59:00 | 显示全部楼层

Re:关于alphablend的透明的一点疑问,

把Alpha的设置改成

        m_pDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP,   D3DTOP_MODULATE );
    m_pDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE );
    m_pDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2,  D3DTA_TEXTURE);

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2005-7-17 20:01:00 | 显示全部楼层

Re:关于alphablend的透明的一点疑问,

把灯光关了。

24

主题

94

帖子

96

积分

注册会员

Rank: 2

积分
96
 楼主| 发表于 2005-7-17 20:42:00 | 显示全部楼层

Re:关于alphablend的透明的一点疑问,

那么如果要灯光就不能用ALPHAblend了吗?

谢谢,可以了哦!!!

不过还是没有想像中那么好的效果呢。。。就是要每个QUAD周围模糊一些消除一些锯齿应该用什么好呢?

2

主题

177

帖子

177

积分

注册会员

Rank: 2

积分
177
发表于 2005-7-18 09:46:00 | 显示全部楼层

Re: Re:关于alphablend的透明的一点疑问,

littlewater: Re:关于alphablend的透明的一点疑问,

那么如果要灯光就不能用ALPHAblend了吗?

谢谢,可以了哦!!!

不过还是没有想像中那么好的效果呢。。。就是要每个QUAD周围模糊一些消除一些锯齿应该用什么好呢?


在周围加soft edge(用一定宽度地渐变的alpha值)可以快速去除边缘走样
但对quad内的纹理走样没有用

如果要纹理内的alpha边缘反走样,可以看看这篇讲《alpha to coverage》的文章(http://www.humus.ca/index.php?page=3D),效果相当不错

24

主题

94

帖子

96

积分

注册会员

Rank: 2

积分
96
 楼主| 发表于 2005-7-18 11:25:00 | 显示全部楼层

Re:关于alphablend的透明的一点疑问,

希望能够有柔和的效果就可以了……对走样不是很理解。。。渐变的alpha值 对quad没有作用啊??我正想这么做呢。。。

2

主题

177

帖子

177

积分

注册会员

Rank: 2

积分
177
发表于 2005-7-19 09:42:00 | 显示全部楼层

Re: Re:关于alphablend的透明的一点疑问,

littlewater: Re:关于alphablend的透明的一点疑问,

希望能够有柔和的效果就可以了……对走样不是很理解。。。渐变的alpha值 对quad没有作用啊??我正想这么做呢。。。


可能是我会错你的意思了,但如果你想要的就是边缘看起来不那么“清晰”的话,我的方法当然有用,quad是最基本最容易的
任何形状都一样,原理就就是在边上留一定宽度,在这个宽度里的像素从quad内向边缘alpha值逐渐从1渐变到0,这样边缘就会产生柔边的模糊效果

因为最近在做非线性编辑软件里的视频特技,所以2D图像处理这方面东西接触比较多
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-26 11:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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