游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: FlyMagic

如何绘制镂空纹理

[复制链接]

20

主题

465

帖子

472

积分

中级会员

Rank: 3Rank: 3

积分
472
QQ
 楼主| 发表于 2006-11-22 13:46:00 | 显示全部楼层

Re:如何绘制镂空纹理

这应该有很好的解决办法。
我只是再原来的多边形上再画一个多边形,只是这个多边形的纹理是镂空的,所以能看到多边形后面的纹理,不需要管多边形后面的纹理是什么。

简单点来说,谁能告诉我怎么画一个镂空的多边形就行了。

0

主题

275

帖子

676

积分

高级会员

Rank: 4

积分
676
发表于 2006-11-22 21:54:00 | 显示全部楼层

Re:如何绘制镂空纹理

想做出?空 ?D形要有Alpha
而且不想有alpha?算的地方要完全通? 0x255
alpha格式是1bit就可以做出 ColorKey的效果
不?一般在????锈??所以??裼 8bit Alpha?砣徇?

g_D3DDevice->SetRenderState (D3DRS_ALPHABLENDENABLE, True)
g_D3DDevice->SetRenderState (D3DRS_SRCBLEND, D3DBLEND_SRCALPHA)
g_D3DDevice->SetRenderState (D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA)
//使用?D形的Alpha
g_D3DDevice->SetTextureStageState (0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE)

20

主题

465

帖子

472

积分

中级会员

Rank: 3Rank: 3

积分
472
QQ
 楼主| 发表于 2006-11-22 21:59:00 | 显示全部楼层

Re:如何绘制镂空纹理

我试了一下没搞出来。
背景色用什么?要用COLORKEY吗?

0

主题

275

帖子

676

积分

高级会员

Rank: 4

积分
676
发表于 2006-11-22 22:02:00 | 显示全部楼层

Re:如何绘制镂空纹理

我?得你去photoShop?理一下?D形?成TGA或是png格式比?容易一些

20

主题

465

帖子

472

积分

中级会员

Rank: 3Rank: 3

积分
472
QQ
 楼主| 发表于 2006-11-22 22:02:00 | 显示全部楼层

Re:如何绘制镂空纹理

这是我的整个绘制函数,你可以指出怎么改吗?

void AlphaMap:raw(void)
{
        // 设置变换矩阵
        D3DXMATRIX matId;
        D3DXMatrixIdentity(&matId);
        g_alpha3d.m_d3d_device->SetTransform(D3DTS_WORLD, &matId);

        // 设置纹理
        g_alpha3d.m_d3d_device->SetTexture(0, m_texture);
        g_alpha3d.m_d3d_device->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
        g_alpha3d.m_d3d_device->SetTextureStageState(0, D3DTSS_COLOROP,   D3DTOP_SELECTARG1);

        // 绘制地图网格
        m_map_mesh->DrawSubset(0);

        // 设置透明
        g_alpha3d.m_d3d_device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
        g_alpha3d.m_d3d_device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
        g_alpha3d.m_d3d_device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_DESTCOLOR);

        // 绘制射程区域
        if (m_range_mesh)
                m_range_mesh->DrawSubset(0);
        // 绘制光标区域
        if (m_cursor_mesh && m_selected)
                m_cursor_mesh->DrawSubset(0);

        // 取消透明
        g_alpha3d.m_d3d_device->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);
}

26

主题

178

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
发表于 2006-11-22 22:11:00 | 显示全部楼层

Re:如何绘制镂空纹理

君の???は、おそらく空?の中に近すぎる二つの平面にあるからです。平面?の距?がごく小さいので、「上」に置かれる必要がある平面は最?的に出力されるラスタライザによって、下にあるとされる?龊悉?ⅳ毪?椁扦埂?irectX SDKにバイアス(bais)に?しての内容を?むようおすすめ。

20

主题

465

帖子

472

积分

中级会员

Rank: 3Rank: 3

积分
472
QQ
 楼主| 发表于 2006-11-22 22:31:00 | 显示全部楼层

Re:如何绘制镂空纹理

对的,用PNG就行了。只用下面这三句。
g_alpha3d.m_d3d_device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE) ;
g_alpha3d.m_d3d_device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA) ;
g_alpha3d.m_d3d_device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA) ;

谢谢Aming。

20

主题

465

帖子

472

积分

中级会员

Rank: 3Rank: 3

积分
472
QQ
 楼主| 发表于 2006-11-22 22:35:00 | 显示全部楼层

Re: Re:如何绘制镂空纹理

效果是这样的……
sf_2006112222356.png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 22:12

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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