Текстура и цвет вместе в GLSL?

Я не могу понять, как получить с OpenGL ES 2.0 результаты, аналогичные OpenGL ES 1.1. Я хочу использовать на самом деле Sampler2D (чтобы смешать мою текстуру с альфа-каналом с буфером кадра), а также установить цвет. Текстура должна быть окрашена в цвет - как в OpenGL ES 1.1 0 результатов, похожих на OpenGL ES 1.1. Я хочу использовать на самом деле Sampler2D (чтобы смешать мою текстуру с альфа-каналом с буфером кадра), а также установить цвет. Текстура должна быть окрашена в цвет - как в OpenGL ES 1.1 0 результатов, похожих на OpenGL ES 1.1. Я хочу использовать на самом деле Sampler2D (чтобы смешать мою текстуру с альфа-каналом с буфером кадра), а также установить цвет. Текстура должна быть окрашена в цвет - как в 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" уничтожает мой альфа-канал черным (потому что я также добавляю 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 вот что я получаю сейчас: Now

И я хочу получить:

What I want to see

Какие идеи для этого? Любая помощь будет принята с благодарностью.

9
задан Constantin 15 February 2011 в 02:09
поделиться