【发布时间】:2011-02-14 23:00:33
【问题描述】:
我不知道如何使用 OpenGL ES 2.0 获得与 OpenGL ES 1.1 类似的结果。我想实际使用 Sampler2D(将我的纹理与 Alpha 通道混合到帧缓冲区)并设置颜色。纹理应该以颜色绘制 - 就像在 OpenGL ES 1.1 中一样 我的 FragmentShader 看起来像这样:
varying lowp vec4 colorVarying;
varying mediump vec2 texcoordVarying;
uniform sampler2D texture;
void main(){
gl_FragColor = texture2D(texture, texcoordVarying) + colorVarying;
}
但是“+ colorVarying”部分用黑色破坏了我的alpha通道(因为我还添加了colorVarying,如果AlphaValue为0)并产生了奇怪的渐变效果......纹理和颜色通道如何在固定功能管道中结合?我对 glColor4f 的替换是:
void gl2Color4f(GLfloat r, GLfloat g, GLfloat b, GLfloat a){
const GLfloat pointer[] = {r, g, b, a};
glVertexAttribPointer(ATTRIB_COLOR, 2, GL_FLOAT, 0, 0, pointer);
glEnableVertexAttribArray(ATTRIB_COLOR);
}
我正在使用 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);如果这有点相关......
对于颜色 1.0、0.0、1.0、1.0,这是我现在得到的:
我想得到:
一些想法来完成这个? 任何帮助将不胜感激。
【问题讨论】:
标签: opengl-es opengl-es-2.0 alpha fragment-shader blending