游戏开发论坛

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

新手求助, 关于ALPHA混合的问题

[复制链接]

6

主题

11

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2009-6-12 14:28:00 | 显示全部楼层 |阅读模式
我在背景上画了一个半透明的纹理,现在我想在这个背景上画一个矩形框,我的矩形框顶点颜色指定为红色,但是为什么画出来的却是黑色的?
m_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(192,192,192 ), 1.0f, 0 );

                if( SUCCEEDED( m_pd3dDevice->BeginScene() ) )
        {

                m_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX1);
                       
                m_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, true);
                m_pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCCOLOR);
                m_pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCCOLOR);
                m_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
                m_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
                    
                     //这里画了半透明的纹理
                                                       
                m_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, false);
      

                     //这里我想画个矩形框 ,顶点颜色都是红色,不过实际画出来的矩形边框却是黑色??
                m_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX2);
                m_pd3dDevice->SetStreamSource(0, m_pCellRectVB, 0, sizeof(CUSTOMVERTEX2));
                m_pd3dDevice->DrawPrimitive(D3DPT_LINESTRIP, 0, 4)


                m_pd3dDevice->EndScene();
        }


        m_pd3dDevice-&gtresent( NULL, NULL, NULL, NULL );
}

13

主题

27

帖子

29

积分

注册会员

Rank: 2

积分
29
发表于 2009-6-12 14:38:00 | 显示全部楼层

Re:新手求助, 关于ALPHA混合的问题

把默认光照关了

6

主题

11

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2009-6-12 14:47:00 | 显示全部楼层

Re:新手求助, 关于ALPHA混合的问题

我在初始化的时候就已经把光照关了啊

34

主题

657

帖子

672

积分

高级会员

Rank: 4

积分
672
发表于 2009-6-12 14:50:00 | 显示全部楼层

Re:新手求助, 关于ALPHA混合的问题

最好把全部代码贴出来。

6

主题

11

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2009-6-12 17:00:00 | 显示全部楼层

Re:新手求助, 关于ALPHA混合的问题

自己试了多次,终于解决了
办法是在画矩形框之前加上这几句
m_pd3dDevice->SetTextureStageState(0,   D3DTSS_COLORARG1,D3DTA_TEXTURE);  
m_pd3dDevice->SetTextureStageState(0,   D3DTSS_COLORARG2, D3DTA_DIFFUSE);
m_pd3dDevice->SetTextureStageState(0,   D3DTSS_COLOROP, D3DTOP_ADD);   

画完矩形后再设置回来
m_pd3dDevice->SetTextureStageState(0,   D3DTSS_COLOROP, D3DTOP_MODULATE);
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-20 01:22

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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