我正在尝试让我的粒子随着时间的推移而逐渐消失。不过,我似乎根本没有改变不透明度。知道问题出在哪里吗?
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);
}发布于 2013-03-01 11:28:35
看起来您需要启用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
发布于 2013-03-02 07:04:52
下面的语句是增加alpha,而不是减少alpha,即淡出。
trans += 0.1;将上面的替换为
trans -= 0.1;另外,我假设你的设置最初是在构造函数或某种类似的设置方法中设置的。
https://stackoverflow.com/questions/15148059
复制相似问题