私のアプリケーションは、アルファ値を調整することによって、さまざまなメディアレイヤーとテキストレイヤーの間でフェードします。しかし、リニア・クロスフェードを使用すると、輝度が途中で「ディップ」してからフェード・バックするように見えます。いくつかの検索の後、私はthis answerが問題を説明しているのを見つけましたが、私が使用しているレイヤーのほとんどがすでに透過性を含んでいるので、一度に1つのレイヤーしかフェードアウトしません。滑らかなアルファクロスフェードのためのアルゴリズム?
Here's an example of the issue I'm having, in HTML/CSS (code below because SO requires it。
<style>
body, html {
width: 100%;
height: 100%;
margin: 0;
background-color: black;
}
.example {
position: absolute;
width: 100%;
height: 100%;
opacity: 0;
}
#example1 {
background-color: red;
animation: 1s linear 0s fade infinite alternate;
}
#example2 {
background-color: red;
animation: 1s linear 1s fade infinite alternate;
}
@keyframes fade {
from {opacity: 0;}
to {opacity: 1;}
}
</style>
<div id="example1" class="example"></div>
<div id="example2" class="example"></div>
2つのdivは、その不透明度を元に戻して消えて、全体の赤色のイメージが残ります。代わりに、それは明るさに浸るように見えます。
alphaを使用して滑らかなクロスフェードを作成するためのアルゴリズムまたは式は何ですか? OpenGLを使用しています。 (HTML/CSSスニペットは、問題を実証する最も簡単な方法でした)。
透明領域をどのように表示しますか?それはあなたが調和する必要がある色です。それとももっと良い。また、アルファチャンネルをブレンドします。 –
透明領域のアルファは0に設定されています。アルファチャネルのみを調整します。他のものは調整しません。 –
ブレンド機能に 'GL_CONSTANT_ALPHA'と' GL_ONE_MINUS_CONSTANT_ALPHA'を使いたいかもしれません。 'glBlendColor'でフェード時間を指定します。 –