0

パーティクルを時間とともにフェードアウトさせようとしています。ただし、不透明度はまったく変更されていないようです。問題が何であるかについて何か考えはありますか?

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);
}
4

2 に答える 2

2

たとえば、アルファブレンディングを有効にする必要があるようです。

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

gl::drawSolidCircle(mLoc,mRadius);

gl::disableAlphaBlending();

このディスカッションの詳細: http: //forum.libcinder.org/topic/beginner-question-changing-alpha-of-a-texture#23286000000675041

于 2013-03-01T03:28:34.950 に答える
0

以下のステートメントは、アルファを増加させるものであり、減少させるものではありません。つまり、フェードアウトします。

trans += 0.1;

上記を次のように置き換えます

trans -= 0.1;

また、最初はコンストラクターまたはそのようなセットアップメソッドで設定'trans'を想定します。

于 2013-03-01T23:04:52.273 に答える