游戏开发论坛

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

请教广告版问题

[复制链接]

11

主题

27

帖子

27

积分

注册会员

Rank: 2

积分
27
发表于 2011-1-6 10:47:00 | 显示全部楼层 |阅读模式
刚实现了利用广告牌渲染的树木,但是问题又出现了,就是融合的时候各广告牌之间因为渲染顺序的前后而相互遮挡,但是又不是正常的遮挡。效果附件的图所示。
我设置的代码如下
void CTree:reRender()
{

        //设置纹理状态
        m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
        m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_SELECTARG1);
        m_pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );
        m_pd3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );

        //Alpha混合设置, 设置混合系数
        m_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE,   true );
        m_pd3dDevice->SetRenderState( D3DRS_SRCBLEND,  D3DBLEND_SRCALPHA );
        m_pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
        //禁用照明效果
        m_pd3dDevice->SetRenderState( D3DRS_LIGHTING, false );
}
void CTree::PostRender(){
        m_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE,   false );
        m_pd3dDevice->SetRenderState( D3DRS_LIGHTING, true );
}
请问这出错在哪里呢?

21

主题

296

帖子

296

积分

中级会员

Rank: 3Rank: 3

积分
296
发表于 2011-1-6 12:16:00 | 显示全部楼层

Re:请教广告版问题

1.先渲染远处的,后渲染近处的。你做到了吗?
2.用AlphaTest,把完全透明的部分剔除吧!实在不行就把DepthTest也给关掉!

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
发表于 2011-1-6 15:51:00 | 显示全部楼层

Re:请教广告版问题

AlphaTest 和 AlphaBlend 要同时打开。

11

主题

27

帖子

27

积分

注册会员

Rank: 2

积分
27
 楼主| 发表于 2011-1-6 20:11:00 | 显示全部楼层

Re: Re:请教广告版问题

TV游戏: Re:请教广告版问题

1.先渲染远处的,后渲染近处的。你做到了吗?
2.用AlphaTest,把完全透明的部分剔除吧!实在不行就把DepthTest也给关掉!


这个之前没有,现在通过排序做了先渲染远处的后渲染近处的了,基本上能正常显示,但还有个别角度还是出现这个问题·

11

主题

27

帖子

27

积分

注册会员

Rank: 2

积分
27
 楼主| 发表于 2011-1-6 20:28:00 | 显示全部楼层

Re:请教广告版问题

问题解决了,非常感谢楼上两位。我打开了alphatest就得了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-3 06:02

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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