我需要模仿Photoshop的混合模式("倍增"、"屏幕",等等。) 在我的照片ES1.1代码(没有 着色器).

有一些文档,在如何做到这一点 HLSL:

我至少需要工作的屏幕模式。

是否有任何实现上的固定管道我可以看看?

有帮助吗?

解决方案

最photoshop的混合模式是根据波特-达芙blendmodes.

这些需要所有你的图像(纹理、renderbuffer)在预乘色的空间。这通常是通过乘以所有像素的价值,与α-值之前把它们储存在一个纹理。E.g。一个完全透明像素看起来像黑色在非预乘色的空间。如果你不熟悉这种颜色-空间花一两个小时的阅读关于它在网。这是一个整洁和良好概念和所需photoshop图像组合。

无论如何-一旦你有你的图像,在这种格式可使用:

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR)

全乘模式是不可能的照片|ES管道。如果你只与完全不透明像素可以假的使用:

glBlendFunc(GL_ZERO, GL_SRC_COLOR)

结果透明像素无论是在你的纹和你的帧缓冲区将是错误的。

其他提示

你应该试试这个:

glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA)

这看起来像是乘我的iPhone/ES照片

你最好开始的地方是要挑起的一个副本 红色的书 和读通过的各章的材料和混合模式。它有一个非常全面和明确的解释如何的经典照片混职能的工作。

我们发现,使用这样的:

glDepthFun( GL_LEQUAL);

是所有需要得到一个屏幕的效果,至少它的工作以及对我的项目。

我不知道为什么这个工作的,但是,如果有人知道请分享。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top