Opengl Shader, ce qui est le gl_FragColor alpha de composants?

Je pense que ça va être un peu simple réponse.

Mais je ne peux pas trouver la réponse sur google.

C'est OpenGLES shader chose. Je suis à l'aide de cocos2d-x moteur.

C'est mon fragment de code du shader.

precision lowp float;
varying vec2 v_texCoord;
uniform sampler2D u_texture;
uniform vec4 u_lightPosition;

void main()
{
    vec4 col=texture2D(u_texture,v_texCoord);

    mediump float lightDistance = distance(gl_FragCoord, u_lightPosition);
    mediump float alpha = 100.0/lightDistance;
    alpha = min(alpha, 1.0);
    alpha = max(alpha, 0.0);
    col.w = alpha;
    //col.a = alpha;


    gl_FragColor=col;

}

Je veux juste donner de l'opacité dans certains cercle de la zone. J'ai donc changer la couleur de l'w de la valeur parce que je pensais que c'est la valeur alpha du texel. Mais le résultat était très bizarre.
Je crains que ce n'est pas la valeur alpha.

Même si j'ai mis la valeur à 1,0 pour les tests, tout changement de sprite pour être brillant et blanc.


Son vertex shader est tout à fait normal, il n'y a rien de spécial à joint.

Aucune idée s'il vous plaît.

Mise à jour: Pour la référence, j'attache de l'image.

cas 1)

col.w = alpha;

Opengl Shader, ce qui est le gl_FragColor alpha de composants?

cas 2)

col.w = 1.0

Opengl Shader, ce qui est le gl_FragColor alpha de composants?


et normal de la texture avant d'appliquer un shader.)

Opengl Shader, ce qui est le gl_FragColor alpha de composants?

  • On dirait que vous demandez, Quel est le sens de la w composante de la vec4 attribué à gl_FragColor.
  • Resultingly, vous avez raison, gl_FragColor w. 🙂
  • Autant que je sache, vous le faites à droite. Vous devrez peut-être de nous montrer que (un) ce que l'entrée de la texture ressemble, et (b) ce que votre courant de sortie ressemble.
  • J'ai mis le résultat de l'échantillon. 🙂
  • Quel est votre mode de fusion?
  • Comme Tommy dit, vous devez ajouter votre mode de fusion actuel de la question. Sur une note de côté, vous pouvez remplacer votre min/max avec des lignes pince comme ceci: clamp(alpha, 0.0, 1.0).
  • Merci Tommy. J'ai vérifié le mode de Fusion encore. c'est GL_ONE, GL_ONE_MINUS_SRC_ALPHA. Je pense que c'est la raison d'être d'éclaircir.

InformationsquelleAutor Jinbom Heo | 2014-07-01