【发布时间】:2014-10-29 04:41:02
【问题描述】:
我有一个非常大的纹理用作背景,我想对其中的一小部分应用过滤器,“小部分”由我拥有的另一个纹理的 alpha 层定义(仍然是 RGB8888) ,我不确定这样做的最佳方法是什么。我想保留我已经用于其他精灵的相同(非常简单)着色器,它类似于基本着色器,即:
precision mediump float;
uniform sampler2D uTexture;
varying vec2 vTexPos;
void main() {
gl_FragColor = texture2D(uTexture, vTexPos);
}
所以,我有一些问题
- 如何将过滤器仅应用于“蒙版”区域并避免绘制其他区域?
- 如果我在加载后再次绘制大纹理以将其应用到屏幕的一小部分,是否会降低性能?
- 我可以将第二个纹理映射到着色器并使用类似“if uTexture2 != null”之类的东西 -> 应用为遮罩吗?与使用第二个着色器相比,这会给我带来任何性能提升吗?
- 两种纹理都是预乘的,我应该如何处理 Alpha 遮罩?
id 喜欢做的事情是这样的(原始、掩码、结果):
我的环境是Android 4.0,我用的是GLES20。
【问题讨论】:
标签: android opengl-es opengl-es-2.0 mask