游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1566|回复: 2

请教关于例子系统的纹理问题

[复制链接]

23

主题

59

帖子

59

积分

注册会员

Rank: 2

积分
59
发表于 2010-5-8 13:46:00 | 显示全部楼层 |阅读模式
问题出现在我绘制粒子的时候它把我的地形问题的纹理也混合上去了。
粒子渲染前的状态设计:
           //关闭灯光
        m_pDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
        //m_pDevice->SetRenderState( D3DRS_FOGENABLE, FALSE );
        m_pDevice->SetRenderState(D3DRS_POINTSPRITEENABLE,true);//指定当前实体将贴图设置到点精灵
        m_pDevice->SetRenderState(D3DRS_POINTSCALEENABLE,true);
        // m_pDevice->SetRenderState(D3DRS_POINTSIZE,FtoDw(10.0f));
        // m_pDevice->SetRenderState(D3DRS_POINTSIZE_MIN,FtoDw(0.0f));
        //距离系数
        m_pDevice->SetRenderState(D3DRS_POINTSCALE_A,FtoDw(0.0f));
        m_pDevice->SetRenderState(D3DRS_POINTSCALE_B,FtoDw(0.0f));
        m_pDevice->SetRenderState(D3DRS_POINTSCALE_C,FtoDw(1.f));

        m_pDevice->SetTextureStageState( 0 , D3DTSS_COLOROP,   D3DTOP_MODULATE );
        m_pDevice->SetTextureStageState( 0 , D3DTSS_COLORARG1, D3DTA_TEXTURE );
        m_pDevice->SetTextureStageState( 0 , D3DTSS_COLORARG2, D3DTA_DIFFUSE );
        m_pDevice->SetTextureStageState( 0 , D3DTSS_ALPHAOP,   D3DTOP_MODULATE );
        m_pDevice->SetTextureStageState( 0 , D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
        m_pDevice->SetTextureStageState( 0 , D3DTSS_ALPHAARG2, D3DTA_DIFFUSE );
//         m_pDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
//         m_pDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);

        m_pDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
       
        m_pDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
        m_pDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
       
        //m_pDevice->SetRenderState( D3DRS_ZENABLE , false );
        m_pDevice->SetRenderState( D3DRS_ZWRITEENABLE , false );

地形渲染设计:
          m_pd3dDevice->SetRenderState(D3DRS_LIGHTING, false);
        m_pd3dDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
        m_pd3dDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
        m_pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_WRAP);
        m_pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_WRAP);
        m_pd3dDevice->SetTexture(0, m_pTex[0]);
        m_pd3dDevice->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0);
        m_pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
        m_pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);

        m_pd3dDevice->SetSamplerState(1, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
        m_pd3dDevice->SetSamplerState(1, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
        m_pd3dDevice->SetSamplerState(1, D3DSAMP_ADDRESSU, D3DTADDRESS_WRAP);
        m_pd3dDevice->SetSamplerState(1, D3DSAMP_ADDRESSV, D3DTADDRESS_WRAP);
        m_pd3dDevice->SetTexture(1, m_pTex[1]);
        m_pd3dDevice->SetTextureStageState(1, D3DTSS_TEXCOORDINDEX, 1);
        m_pd3dDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_ADDSIGNED);
        m_pd3dDevice->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_TEXTURE);
        m_pd3dDevice->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT);
地形用了多纹理混合,粒子绘制顶点格式为(D3DFVF_XYZ | D3DFVF_PSIZE | D3DFVF_DIFFUSE)。

我在想地形多纹理混合是不是有什么状态搞错了。



顺便问一下,在做混合是不关灯光的后果是什么,我怎么有时候关不关灯光好像结果没什么不一样。

3

主题

11

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2010-5-9 13:30:00 | 显示全部楼层

Re:请教关于例子系统的纹理问题

做粒子Render之前SetTexture(0, NULL);

23

主题

59

帖子

59

积分

注册会员

Rank: 2

积分
59
 楼主| 发表于 2010-5-9 14:00:00 | 显示全部楼层

Re:请教关于例子系统的纹理问题

  谢谢了啊
  原来真的是这样
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-9 17:36

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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