1
0
mirror of https://github.com/LearnOpenGL-CN/LearnOpenGL-CN.git synced 2025-08-23 04:35:28 +08:00

Update 03 Blending.md

修改红色 为 目标颜色
This commit is contained in:
SpringChan
2016-07-12 12:04:22 +08:00
committed by GitHub
parent 3b11a476e7
commit 4e5671b10f

View File

@@ -143,7 +143,7 @@ $$
![](http://learnopengl.com/img/advanced/blending_equation.png)
我们有两个方块,我们希望在红色方块上绘制绿色方块。红色方块会成为颜色(它会先进入颜色缓冲),我们将在红色方块上绘制绿色方块。
我们有两个方块,我们希望在红色方块上绘制绿色方块。红色方块会成为目标颜色(它会先进入颜色缓冲),我们将在红色方块上绘制绿色方块。
那么问题来了我们怎样来设置因子呢我们起码要把绿色方块乘以它的alpha值所以我们打算把\(F_{src}\)设置为源颜色向量的alpha值0.6。接着让目标方块的浓度等于剩下的alpha值。如果最终的颜色中绿色方块的浓度为60%我们就把红色的浓度设为40%1.0 0.6)。所以我们把\(F_{destination}\)设置为1减去源颜色向量的alpha值。方程将变成
@@ -284,4 +284,4 @@ for(std::map<float,glm::vec3>::reverse_iterator it = sorted.rbegin(); it != sort
虽然这个按照它们的距离对物体进行排序的方法在这个特定的场景中能够良好工作,但它不能进行旋转、缩放或者进行其他的变换,奇怪形状的物体需要一种不同的方式,而不能简单的使用位置向量。
在场景中排序物体是个有难度的技术它很大程度上取决于你场景的类型更不必说会耗费额外的处理能力了。完美地渲染带有透明和不透明的物体的场景并不那么容易。有更高级的技术例如次序无关透明度order independent transparency但是这超出了本教程的范围。现在你不得不采用普通的混合你的物体但是如果你小心谨慎并知道这个局限你仍可以得到颇为合适的混合实现。
在场景中排序物体是个有难度的技术它很大程度上取决于你场景的类型更不必说会耗费额外的处理能力了。完美地渲染带有透明和不透明的物体的场景并不那么容易。有更高级的技术例如次序无关透明度order independent transparency但是这超出了本教程的范围。现在你不得不采用普通的混合你的物体但是如果你小心谨慎并知道这个局限你仍可以得到颇为合适的混合实现。