kaj*_*ham 5 blending opengl-es ios
当一个顶点处的纹理与另一顶点合并时,我正在尝试实现以下混合:

这是我目前拥有的:

我启用了混合功能,并将混合功能指定为:
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
Run Code Online (Sandbox Code Playgroud)
我可以看到,在Paper应用程序中绘制的图像由一个小圆圈组成,该圆圈在前后融合了相同的纹理,并且对颜色和Alpha具有一些混合效果。
如何达到理想的效果?
更新:
我认为正在发生的是,两个纹理的相交区域正在修改Alpha通道(添加或其他自定义功能),而没有在相交区域中绘制纹理。该区域的其余部分将绘制其余的纹理。像这样:

不过,我不确定如何实现此结果。
您不需要为此进行混合(并且它不会按您想要的方式工作)。
我认为只要您在屏幕空间中定义纹理坐标,它就应该在两个单独的圆圈之间无缝。
为此,不使用通过顶点着色器传递的纹理坐标,而是使用片段的位置来采样纹理,加上或减去一些缩放:
float texcoord = gl_FragCoord / vec2(xresolution_in_pixels, yresolution_in_pixels);`
gl_FragColor = glTexture2D(papertexture, texcoord);
Run Code Online (Sandbox Code Playgroud)
如果您无法访问 GLSL,则可以使用模板缓冲区执行某些操作。只需将所有圆圈绘制到模板缓冲区中,使用组合区域作为模板蒙版,然后绘制纹理的全屏四边形。颜色将无缝地沉积在所有圆圈的交界处。
| 归档时间: |
|
| 查看次数: |
1267 次 |
| 最近记录: |