我的應用程序通過調整它們的alpha值而在各種媒體和文本層之間漸變。但是,當使用線性交叉淡入淡出時,亮度似乎在中途「下降」,然後消退。經過一番搜索之後,我發現this answer解釋了這個問題,但是建議的解決方案,一次只褪去一層,對我來說不起作用,因爲我使用的大多數圖層已經包含透明度。平滑alpha交叉淡入淡出算法?
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>
的兩個div應該淡化其混濁回來來回,得到一個固體紅色圖像的整個時間。相反,它似乎在亮度下降。
使用alpha創建平滑交叉淡入淡出的算法或公式是什麼?我正在使用OpenGL,如果這是相關的。 (HTML/CSS片段只是展示問題的最簡單方法)。
那麼你如何顯示透明區域?這是你需要融合的顏色。或者更好。也混合alpha通道。 –
透明區域的alpha設置爲0.我只調整alpha通道,而不是其他任何通道。 –
看來,您可能只是想將「GL_CONSTANT_ALPHA」和「GL_ONE_MINUS_CONSTANT_ALPHA」用於混合功能。並用'glBlendColor'指定衰落時間。 –