【问题标题】:Changing alpha in Cinder在 Cinder 中更改 alpha
【发布时间】:2013-03-01 00:04:14
【问题描述】:

我试图让我的粒子随着时间的推移而消失。不过,我似乎根本没有改变不透明度。知道问题出在哪里吗?

class Particle
{

public:

    Particle();
    Particle( ci::Vec2f );
    void update();
    void draw();

    ci::Vec2f   mLoc;
    ci::Vec2f   mDir;
    float       mVel;
    float       trans;

    ci::ColorA       mColor;
    float           mRadius;

    float col_1,col_2,col_3;
};


void Particle::update()
{
  mLoc+=mDir*mVel/2;
  trans+=0.1;
  mColor=ColorA(col_1,col_2,col_3,trans); 
}

void Particle::draw()
{ 
 gl::color(mColor);
 gl::drawSolidCircle(mLoc,mRadius);
}

【问题讨论】:

  • 好奇是否有任何一个答案提供了解决方案?我很想知道。

标签: c++ alpha cinder


【解决方案1】:

您似乎需要启用 Alpha 混合,例如:

gl::enableAlphaBlending();
gl::color( mColor );

gl::drawSolidCircle(mLoc,mRadius);

gl::disableAlphaBlending();

这个讨论有更多细节:http://forum.libcinder.org/topic/beginner-question-changing-alpha-of-a-texture#23286000000675041

【讨论】:

    【解决方案2】:

    以下语句是增加 alpha,而不是减少它,即逐渐消失。

    trans += 0.1;
    

    将上面替换为

    trans -= 0.1;
    

    另外,我会假设您的设置最初是在构造函数或某些此类设置方法中设置的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-18
      • 1970-01-01
      • 2015-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多