Ale*_*ysh 16 photoshop opengl-es
我需要在我的OpenGL ES 1.1代码中模仿Photoshop混合模式("乘法","屏幕"等)(没有着色器).
有一些关于如何使用 HLSL 执行此操作的文档:
我至少需要工作屏幕模式.
我可能会看到固定管道上的任何实现吗?
Nil*_*nck 15
大多数photoshop混合模式都基于Porter-Duff混合模式.
这些要求所有图像(纹理,渲染缓冲区)都在预乘颜色空间中.这通常通过在将所有像素值存储在纹理中之前将其与alpha值相乘来完成.例如,完全透明的像素在非预乘色彩空间中看起来像黑色.如果你不熟悉这个色彩空间花一两个小时在网上阅读它.这是一个整洁和良好的概念,需要类似Photoshop的作品.
无论如何 - 一旦你以这种格式获得图像,你可以使用以下方式启用屏幕:
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR)
Run Code Online (Sandbox Code Playgroud)
OpenGL | ES管道无法实现完整的MULTIPLY模式.如果您只使用完全不透明像素,则可以使用以下方法伪造它:
glBlendFunc(GL_ZERO, GL_SRC_COLOR)
Run Code Online (Sandbox Code Playgroud)
然而,纹理和帧缓冲区中透明像素的结果将是错误的.
Vla*_*ego 10
你应该试试这个:
glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA)
Run Code Online (Sandbox Code Playgroud)
这看起来像是在iPhone/OpenGL ES上与我相乘
| 归档时间: |
|
| 查看次数: |
17359 次 |
| 最近记录: |