xevuel Temat założony przez niniejszego użytkownika |
[OpenGL] Zamiana kolorów » 2012-04-13 20:29:52 Mam taki program, który wczytuje obraz z pliku .tga i wyświetla go na ekranie. Ja chciałbym, aby piksele w kolorze białym były przeźroczyste. Męczę się już tym chwilę, a google mówi tylko o teksturach (próbowałem tych rozwiązań, nie działają). Jak sprawić, aby piksele o danym kolorze we wczytanym obrazie stały się przeźroczyste? Jeśli to możliwe, prosiłbym o kawałek kodu (obraz trzymam w tablicy GLvoid * pixels; ), a jeśli nie, to prosiłbym o wskazanie koniecznych czynności :) |
|
DejaVu |
» 2012-04-13 20:40:07 Zamiast sprawiać by określony kolor był przezroczysty to mógłbyś wczytać bitmapę z przezroczystością.
|
|
xevuel Temat założony przez niniejszego użytkownika |
» 2012-04-13 20:56:55 Sprawdziłem to, ale nigdzie nie ma kodu :( Jest za to to, o czym już wcześniej myślałem - sprawdzać po kolei składowe R, G, i B, i odpowiednio ustawiać składową Alpha. Problem jest w tym, że nie wiem, jak to wykonać :( Próbowałem czegoś w rodzaju pixels[ i ] , ale to się nie kompiluje, ze względu na typ ( GLvoid * ). Mógłbyś napisać jak w takim wypadku można po kolei sprawdzać piksele? Bitmapy mają za dużą objętość... Tak myślałem o libpng, ale nigdy wcześniej go nie używałem - po wczytaniu obrazu będzie można go wyświetlić za pomocą standardowych funkcji? Tak, wiem, mógłbym sam sprawdzić, ale jakoś nie uśmiecha mi się uczyć nowego interfejsu jeśli by miał potem nie działać... |
|
DejaVu |
» 2012-04-13 20:59:46 Na Twoim miejscu wziąłbym bibliotekę SFML - ona jest przecież oparta o OpenGL-a i z automatu masz załatwiony problem wczytywania tekstur w kilku popularnych formatach :) |
|
xevuel Temat założony przez niniejszego użytkownika |
» 2012-04-13 21:03:37 Kiedyś się nieźle przejechałem na łączeniu kilku podobnych bibliotek - nie mówiąc o tym, że kod nie byłby zbytnio czytelny (jak dla mnie). No nic, popróbuję z tym libpng, a jeśli jakimś cudem mi się nie uda, to może pomyślę o SFML ;) //Nie, to nie są tekstury :) Wczytuję coś w rodzaju celownika :) //Problem rozwiązany. Po wnikliwej analizie kilku kodów znalezionych w google, doszedłem do wniosku że mój kod jest poprawny - i zacząłem zastanawiać się dlaczego jedne obrazy wyświetlane są jako przeźroczyste, a inne nie. Okazało się, że to wina obrazu - był zapisany bez użycia kanału alpha, a to dlatego, że IrfanView nie obsługuje standardowo przeźroczystości w plikach .tga. Poszukałem trochę w google i znalazłem to: http://www.eprogramy.org/programy-pc/program/1417. Programik może skromny, ale w pełni obsługuje to, o co mi chodziło - ustawianie kanału alpha. |
|
« 1 » |