opengles3.0 片段着色器(八):
顶点颜色通常保存一个预先计算的颜色或者顶点照明计算的结果。纹理颜色来自于实用图元纹理坐标绑定的纹理中读取的值
#version 300es
precision mediump float;
unifomr sampler2d s_tex0;
in vec2 v_texCoord;
in vec4 v_primaryColor;
layout(location=0) out vec4 outColor
void main() {
outColor = texture(s_tex0, v_texCoord)*v_primaryColor;
}
纹理读取结果和从顶点着色器传递的输入值v_primaryColor相乘。这个例子,顶点着色器已经将颜色传递给片段着色器。
precision mediump float;
in vec2 v_texCoord;
layout(location=0) out vec4 outColor;
uniform sampler2D s_baseMap;
uniform sampler2D s_lightMap;
void main() {
vec4 baseColor;
vec4 lightColor;
baseColor = texture(s_baseMap,v_texCoodrd);
lightColor = texture(s_lightmap,v_texCoord);
outColor = baseColor)(lightColor+0.25)
}
设置代码
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D,baseTextrureid);
glUniformli(baseMapLoc,0);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D,lightTextrureid);
glUniformli(lightMapLoc,0);
着色器实现 alpha测试:
#version300 es
precision mediump float;
uniform sampler2D baseMap;
in vec2 v_texCoord;
layout (location = 0) out vec4 outColor;
void main() {
vec4 baseColor = texture(baseMap,v_texCoord);
if (baseColor.a<0.25) {
discard;
}
else
{
outColor = baseColor;
}
}
用户裁剪平面。