游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5113|回复: 14

请问纹理贴图的时候怎么样把一种颜色过滤掉!

[复制链接]

69

主题

335

帖子

343

积分

中级会员

Rank: 3Rank: 3

积分
343
QQ
发表于 2003-11-7 01:09:00 | 显示全部楼层 |阅读模式
d3d.
例如我的背景色是白色,要怎么过滤?

6

主题

100

帖子

105

积分

注册会员

Rank: 2

积分
105
发表于 2003-11-7 09:32:00 | 显示全部楼层

Re:请问纹理贴图的时候怎么样把一种颜色过滤掉!

好好看一下融合(Blend)吧.

69

主题

335

帖子

343

积分

中级会员

Rank: 3Rank: 3

积分
343
QQ
 楼主| 发表于 2003-11-7 13:17:00 | 显示全部楼层

Re:请问纹理贴图的时候怎么样把一种颜色过滤掉!

Texture Blending 我看了好几遍了,还是没什么启发!

楼上的仁兄能再说的具体点吗?

3

主题

86

帖子

94

积分

注册会员

Rank: 2

积分
94
QQ
发表于 2003-11-7 14:00:00 | 显示全部楼层

Re:请问纹理贴图的时候怎么样把一种颜色过滤掉!

alpha test来做吧
调入纹理的时候,指明透明色

6

主题

100

帖子

105

积分

注册会员

Rank: 2

积分
105
发表于 2003-11-7 14:30:00 | 显示全部楼层

Re:请问纹理贴图的时候怎么样把一种颜色过滤掉!

就是alpha 融合了.我是用opengl的,dx可能不太相同

69

主题

335

帖子

343

积分

中级会员

Rank: 3Rank: 3

积分
343
QQ
 楼主| 发表于 2003-11-7 14:30:00 | 显示全部楼层

Re:请问纹理贴图的时候怎么样把一种颜色过滤掉!

coolvoldo:
    能再说详细点吗?
怎么样调入纹理的时候,指明透明色

sdk说的简单了,很难理解。。。:(

3

主题

86

帖子

94

积分

注册会员

Rank: 2

积分
94
QQ
发表于 2003-11-7 15:00:00 | 显示全部楼层

Re:请问纹理贴图的时候怎么样把一种颜色过滤掉!

D3DXCreateTextureFromFileEx函数的参数D3DCOLOR ColorKey,可以用于指定纹理文件的关键色,用他来代替D3DXCreateTextureFromFile函数

关于alphatest直接在sdk里面搜一下就有了,还有一段例子:

// This code example assumes that pCaps is a
// D3DCAPS8 structure that was filled with a
// previous call to IDirect3D8::GetDeviceCaps.
if (pCaps.AlphaCmpCaps & D3DPCMPCAPS_GREATEREQUAL)
{
    dev->SetRenderState(D3DRS_ALPHAREF, (DWORD)0x00000001);
    dev->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE);
    dev->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);
}

// If the comparison is not supported, render anyway.
// The only drawback is no performance gain.

具体效果,可见下图:

3

主题

86

帖子

94

积分

注册会员

Rank: 2

积分
94
QQ
发表于 2003-11-7 15:02:00 | 显示全部楼层

Re:请问纹理贴图的时候怎么样把一种颜色过滤掉!

另外,OpenGL我完全不懂

在dx里面,Alpha Test和Alpha Blend是完全不同的两个概念

69

主题

335

帖子

343

积分

中级会员

Rank: 3Rank: 3

积分
343
QQ
 楼主| 发表于 2003-11-7 15:09:00 | 显示全部楼层

Re:请问纹理贴图的时候怎么样把一种颜色过滤掉!

哦,我刚刚找到,正在实验呢,十分感谢。

69

主题

335

帖子

343

积分

中级会员

Rank: 3Rank: 3

积分
343
QQ
 楼主| 发表于 2003-11-7 16:11:00 | 显示全部楼层

Re:请问纹理贴图的时候怎么样把一种颜色过滤掉!

老大们,帮我看看,还是没办法过滤掉,不知道是哪里的问题!
我过滤掉黑色的背景
...............
:3DXCreateTextureFromFileEx( pDevice,"Temp.jpg",D3DX_DEFAULT,
        D3DX_DEFAULT,D3DX_DEFAULT,0,D3DFMT_A1R5G5B5,
        D3DPOOL_DEFAULT,D3DX_DEFAULT ,D3DX_DEFAULT ,
                0x00000000,NULL,NULL,&m_pTexture);
..................

pDevice->SetTexture( 0, m_pTexture );
pDevice->SetRenderState(D3DRS_ALPHAREF, (DWORD)0x00000001);
pDevice->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE);
pDevice->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);
        pDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
        pDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE );
        pDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
        pDevice->SetStreamSource( 0, m_pVB, 0, sizeof(CUSTOMVERTEX) );
        pDevice->DrawPrimitive( D3DPT_TRIANGLEFAN, 0, 2 );

刚开始学d3d,感觉纹理这部分真是博大精深啊。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-24 03:23

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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