【问题标题】:Turning a DirectX sprite Solid White将 DirectX 精灵变为纯白色
【发布时间】:2010-08-21 13:04:25
【问题描述】:

我有一个我的主角的精灵。我通常用 ARGB(255,255,255,255) 的颜色模数绘制它。但是,我希望我的精灵画得更白。我可以通过改变颜色模数使精灵被绘制成任何颜色,除了白色。我能做些什么?我正在使用 C++ 和 DirectX9 并使用 LPD3DXSPRITE 来绘制我的纹理。

【问题讨论】:

    标签: directx sprite


    【解决方案1】:

    我知道有两种方法,一种低效,一种更有效:

    低效 ) 使用 alphablending 绘制另一个半透明的白色精灵。

    Efficient ) 使用着色器绘制四边形。 (一个简单的着色器,在纹理样本的实际返回值上加上一个值,而不是相乘)

    【讨论】:

      【解决方案2】:

      试试这个:

      IDirect3DDevice9* device = your_device;
      LPD3DXSPRITE sprite = your_sprite;
      LPDIRECT3DTEXTURE9 texture = your_texture;
      D3DXVECTOR3 center;
      D3DXVECTOR3 position;
      unsigned char c = how_white_you_want;
      
      
      sprite->Begin(D3DXSPRITE_ALPHABLEND);
      
      device->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_ADD );
      device->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
      device->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
      
      sprite->Draw(texture, NULL, &center, &sprite, D3DCOLOR_RGBA(c,c,c,255));
      
      sprite->End();
      

      我认为它简单高效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-09-18
        • 1970-01-01
        • 2012-07-15
        • 1970-01-01
        • 2012-12-06
        • 1970-01-01
        • 2015-12-23
        相关资源
        最近更新 更多