Příklad a zdroják ke stažení (370k)
Pomocí blend příkazu 'glBlendFunc(GL_ONE, GL_ONE)' je průhledná černá barva, pomocí příkazu 'glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR)' je průhledná bílá barva. Barvy v textuře jsou však průhledné podle toho, kolik obsahuje černé v prvním případě, nebo bílé v druhém případě. Pokud však chci, aby byl průhledný jenom černý okraj a ostatní, aby průhledné nebylo, jako v tomto případě motýl, je to trochu složitější. Musíme vytvořit masku průhlednosti.
Vše co je bílé, bude průhledné, kde je černá barva, bude neprůhledný objekt. Příkaz je 'glBlendFunc(GL_DST_COLOR,GL_ZERO)'.Těsně před masku pak vložíme texturu.
A nastavíme průhlednost černé barvy 'glBlendFunc(GL_ONE, GL_ONE)'.procedure DrawButterfly; var i: integer; begin for i := 2 to 3 do begin //cyklu pro vytvoření druhé a třetí textury (první textura je pozadí) glEnable(GL_BLEND); //zapne se průhlednost if i = 2 then glBlendFunc(GL_DST_COLOR,GL_ZERO); //pokud se má zobrazit druhá textura nastav tuto blend funkci if i = 3 then glBlendFunc(GL_ONE, GL_ONE); //pokud se má zobrazit třetí textura nastav tuto blend funkci glBindTexture(GL_TEXTURE_2D, TextureBin[i]); //načti texturu glEnable(GL_TEXTURE_2D); //zapni texturování glBegin(GL_TRIANGLES); //vytvoř trojúhelníky //první trojúhelník glTexCoord2f(Coord1[i].x,Coord1[i].y); //texturová koordinace prvního bodu glVertex3f(Point1[i].x,Point1[i].y,Point1[i].z); //pozice prvního bodu glTexCoord2f(Coord2[i].x,Coord2[i].y); //texturová koordinace druhého bodu glVertex3f(Point2[i].x,Point2[i].y,Point2[i].z); //pozice druhého bodu glTexCoord2f(Coord3[i].x,Coord3[i].y); //texturová koordinace třetího bodu glVertex3f(Point3[i].x,Point3[i].y,Point3[i].z); //pozice třetího bodu //druhý trojúhelník glTexCoord2f(Coord2[i].x,Coord2[i].y); //texturová koordinace druhého bodu glVertex3f(Point2[i].x,Point2[i].y,Point2[i].z); //pozice druhého bodu glTexCoord2f(Coord3[i].x,Coord3[i].y); //texturová koordinace třetího bodu glVertex3f(Point3[i].x,Point3[i].y,Point3[i].z); //pozice třetího bodu glTexCoord2f(Coord4[i].x,Coord4[i].y); //texturová koordinace čtvrtého bodu glVertex3f(Point4[i].x,Point4[i].y,Point4[i].z); //pozice čtvrtého bodu glEnd; //konec vytváření trojúhelníků end; //konec cyklu glDisable(GL_BLEND); //vypni průhlednost glPopMatrix; end;
Celej zdroják je tady
Transp_f.pas;
Home