Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[OpenGL] Zamiana kolorów

Ostatnio zmodyfikowano 2012-04-13 21:03
Autor Wiadomość
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 :)
P-54407
DejaVu
» 2012-04-13 20:40:07
Zamiast sprawiać by określony kolor był przezroczysty to mógłbyś wczytać bitmapę z przezroczystością.
Frazy, które należy wpisać w wyszukiwarkę google:
P-54409
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ć...
P-54410
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 :)
P-54411
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.
P-54412
« 1 »
  Strona 1 z 1