Jump to content

[Delphi, OpenGL] Łagodne przechodzenie tekstur


Adam27

Recommended Posts

Ja bym to zrobił w taki sposób, żeby zmieniać przezroczystość miejsca przylegania.

Chyba do tego musi być włączony blending.

A sposób taki:

AB

załóżmy, że A i B to kwadraty o boku równym 1.0.

4% kwadratu B zachodzi na kwadrat A, więc rysujemy:

//kwadrat A

glBindTexture(GL_TEXTURE_2D, kwA);
glBegin(GL_QUADSTRIP);
glColor4f(1,1,1,1);

glTexCoord2f(0,1);
glVertex2d(-1,1);

glTexCoord2f(0,0);
glVertex2d(-1,0);

glTexCoord2f(1-0.04,1);
glVertex2d(0-0.04,1);

glTexCoord2f(1-0.04,0);
glVertex2d(0-0.04,0);

glColor4f(1,1,1,0);

glTexCoord2f(1-0.04,1);
glVertex2d(0,1);

glTexCoord2f(1-0.04,0);
glVertex2d(0,0);
glEnd();

// kwadrat B
glBindTexture(GL_TEXTURE_2D, kwB);
glBegin(GL_QUADSTRIP);
glColor4f(1,1,1,0);

glTexCoord2f(0,1);
glVertex2d(0-0.04,1);

glTexCoord2f(0,0);
glVertex2d(0-0.04,0);

glColor4f(1,1,1,1);

glTexCoord2f(0.04,1);
glVertex2d(0,1);

glTexCoord2f(0.04,0);
glVertex2d(0,0);


glTexCoord2f(1,1);
glVertex2d(1-0.04,1);

glTexCoord2f(1,0);
glVertex2d(1-0.04,0);
glEnd();

Jak się nigdzie nie rypnąłem powinno działać :D

Link to comment
Share on other sites

myślałem o pomyśle Jasona, ale nie byłem pewien czy zmiana alphy koloru vertexa wpłynie też na przeźroczystość tekstury

hmmm, wpłynie, w too many troopers:

    if (bullet_time)
   {
           glColor4d(1,1,1,1);
           glTexCoord1f(0);
           glVertex2f(-0.05,0.2);
           glTexCoord1f(1);
           glVertex2f(0.05,0.2);
           glColor4d(1,1,1,0.1);
           glTexCoord1f(1);
           glVertex2f(0.05,0.4);
           glTexCoord1f(0);
           glVertex2f(-0.05,0.4);
   }

Działa :) Jak się włączy bullet time, to to jest ta smuga za pociskami :D

 

i jak tam w moim przykładzie schodzi od alpha 1 do 0, to jest płynne przejście na tych 4 procentach każdego obrazu.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...