OpenGL-ES переменная текстура альфа (2D)? - PullRequest
2 голосов
/ 02 февраля 2010

У меня есть текстура с прозрачностью (белый треугольник с этой световой информацией), и просто не может сделать ее альфа-переменной .

альтернативный текст http://gotoandplay.freeblog.hu/files/alpha_help.png

Код чертежа, с отсутствующим фрагментом:

  //Place polygon vertices to the bottom left within the view.
  glLoadIdentity();
  glTranslatef(centerX, centerY, 0);

  //Draw "diffuse" layer.
  glBindTexture(GL_TEXTURE_2D, spriteTexture[0]); //Bind.
  glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 

  //Offset during development only.
  glLoadIdentity();
  glTranslatef(centerX-10, centerY+10, 0); 

  //Draw "specular" layer.
  glActiveTexture(GL_TEXTURE0);
  glBindTexture(GL_TEXTURE_2D, spriteTexture[1]); //Bind.

  //Some smart alpha scaling code needs here...

  glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 

Может кто-нибудь помочь мне с соответствующими строками кода? Я полагаю, что-нибудь из glBlendFunc или glTextEnvi.

1 Ответ

0 голосов
/ 04 февраля 2010

Хорошо, я понял, даже если не понимаю, что именно сделал.

    //Place polygon vertices to the bottom left within the view.
    glLoadIdentity();
    glTranslatef(centerX, centerY, 0);

//--1   

        //Draw "diffuse" layer.
        glActiveTexture(GL_TEXTURE0);
        glBindTexture(GL_TEXTURE_2D, spriteTexture[0]); //Bind.

            //Blending.
            glBlendFunc(GL_ONE, GL_ONE);

        glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);  

//--2   

        //Draw "specular" layer.
        glBindTexture(GL_TEXTURE_2D, spriteTexture[1]); //Bind.

            //Blending.
            glColor4f(opacity, opacity, opacity, opacity);
            glBlendFunc(GL_SRC_COLOR, GL_ONE_MINUS_SRC_ALPHA);

        glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

Я пробовал другой способ раньше ...

glColor4f(1.0f, 1.0f, 1.0f, opacity);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

... но вторая карта была как-то "слабее".

...