No puedo entender cómo obtener OpenGL ES 2.0 de manera similar Resultados para OpenGL ES 1.1. Quiero usar realmente un Sampler2D (para combinar mi textura con Alpha Channel con el Framebuffer) y también establecer un Color. La textura debe ser pintado en el color - como en OpenGL ES 1.1 Mi FragmentShader se ve así:¿Textura y color juntos en GLSL?
varying lowp vec4 colorVarying;
varying mediump vec2 texcoordVarying;
uniform sampler2D texture;
void main(){
gl_FragColor = texture2D(texture, texcoordVarying) + colorVarying;
}
Pero la parte "+ colorVarying" destruye mi alphachannel con negro (porque añado también colorVarying, si el AlphaValue es 0) y produce un extraño efecto de degradado ... ¿Cómo se combina el canal de color de textura & en la tubería de función fija? Mi reemplazo para glColor4f es:
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);
}
y estoy usando glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); si esto es de alguna manera relevante ...
Para el color 1.0, 0.0, 1.0, 1.0 aquí es lo que me pasa ahora:
Y quiero llegar:
Algunas ideas para lograr esto? Cualquier ayuda sería apreciada.
¡Gracias! Eso funciona muy bien para mí. – Constantin