Autor Wątek: Usuwanie tła z tekstury  (Przeczytany 2696 razy)

Offline Moriquendi

  • Użytkownik

# Maj 07, 2009, 10:33:32
Chciałem żeby w mojej grze 2D bohater nie był kwadratowy. Chyba najlepszym rozwiązaniem jest usunięcie tła wokół postaci, które jest np. różowe...Ale jak to zrobić? Czytałem coś o maskowaniu, ale nie do końca rozumiem jak to działa....No i z tego co zrozumiałem to do każdej tekstury musiałbym tworzyć maskę.
A ja bym chciał trochę prościej...Coś w stylu: usuń wszystkie piksele w kolorze różowym...

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline revo

  • Użytkownik

# Maj 07, 2009, 10:43:54
Szukaj w sieci pod hasłem "Color Key <nazwa biblioteki graficznej której używasz>".

Offline Liosan

  • Redaktor

# Maj 07, 2009, 10:56:43
Możesz też tworzyć tekstury z kanałem alpha zamiast z kolorem różowym, jeśli Twoja biblioteka takie wspiera. Chociażby pliki .png mogą mieć przezroczystość.

Liosan

Offline Moriquendi

  • Użytkownik

# Maj 07, 2009, 11:01:18
A co jest bardziej ekonomiczne i wydajne?

Edit:
Używam Opengl.

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Maj 07, 2009, 11:13:33
A co jest bardziej ekonomiczne i wydajne?

Edit:
Używam Opengl.
W takim razie kanał alpha.

Offline misioslaw

  • Użytkownik
    • www.asmforce.eu

# Maj 07, 2009, 13:43:03
Jednobitowe klucze koloru to pozostałości po ubiegłym tysiącleciu, gdy pracowało się na opartej na paletach kolorów grafice. Przy pracy z 24bitowym kolorem nie ma sensu tego stosować, zamiast tego 8bitowy kanał alpha.

Offline Moriquendi

  • Użytkownik

# Maj 07, 2009, 14:13:52
Dobra, wziąłem się za te png. Znalazłem jakąś bibliotekę SOIL.
Ściągnąłem pliki i wrzuciłem *.lib do .../Microsoft SDKs/.../Lib
Pliczek *.h wrzuciłem do katalogu i dodałem go do projektu.
W Visual studio dałem także w ustawieniach projektu -> Configuration Properties ->Linker -> Input ten plik *.lib

Dodałem do programu kod:
 /* load an image file directly as a new OpenGL texture */
GLuint tex_2d = SOIL_load_OGL_texture
(
"img.png",
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT
);
I wszystko musiało się standardowo zawalić.
Cytuj
1>Linking...
1>libSOIL.lib(stb_image_aug.o) : error LNK2019: unresolved external symbol __alloca referenced in function _stbi_zlib_decode_noheader_buffer
1>libSOIL.lib(image_helper.o) : error LNK2019: unresolved external symbol _sqrtf referenced in function _RGBE_to_RGBdivA2
1>C:\Users\Michał\Documents\Visual Studio 2008\Projects\gra- opengl\Debug\gra- opengl.exe : fatal error LNK1120: 2 unresolved externals
Co robić? ??? :'(

Edit:
I tak z innej beczki. Nie za bardzo jeszcze rozumiem po co są te niektóre 'flagi' typu "SOIL_FLAG_MIPMAPS, SOIL_FLAG_INVERT_Y". Nie wiem co to zmienia. Czy możecie powiedzieć jakie flagi powinienem przesłać do tej funkcji żeby najlepiej się nadawały do gry 2D?

Edit2:
Znalazłem ten temat:
http://forum.warsztat.gd/index.php/topic,7783.0.html
Ten sam problem, ale dalej nie wiem jak rozwiązać. To jakie pliki w końcu dodać?
« Ostatnia zmiana: Maj 07, 2009, 15:01:10 wysłana przez Moriquendi »

Offline Avaj

  • Użytkownik

# Maj 07, 2009, 15:40:51
Nieczytanie FAQ jest na tym forum karane śmiercią.

EDIT:

A co do tych flag, to proponuję poczytać o mipmappingu i o sposobie przechowywania tekstur przez OpenGL.

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Maj 07, 2009, 15:58:49
Cytuj
A co do tych flag, to proponuję poczytać o mipmappingu i o sposobie przechowywania tekstur przez OpenGL.
Sposób przechowywania tekstur w OpenGL jest identyczny z tym w Direct3D.

Offline .:NOXY:.

  • Użytkownik
    • Profil

# Maj 07, 2009, 16:07:27
Sciagnij sobie Devila zrob sobie obrazek w PNG wlasnie z kanalem alpha czyli zapisujesz go jako 24bit png + 32 bit lapha bodajze tak zapisuje wiekszosc programow graficznych przynajmniej ja tak robie programem ArtGem ;] i juz ladowanie znajdziesz na google.pl wpisz devil load image i po sprawie. bardzo wygodna biblioteka nie trzeba sie wogole martwic maskami i innym dziwactwem

Offline Avaj

  • Użytkownik

# Maj 07, 2009, 16:12:54
Cytuj
A co do tych flag, to proponuję poczytać o mipmappingu i o sposobie przechowywania tekstur przez OpenGL.
Sposób przechowywania tekstur w OpenGL jest identyczny z tym w Direct3D.
Nie wiem jak jest w D3D, ale to nie zmienia faktu, że na pierwszy rzut oka jest dziwne ;)

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Maj 07, 2009, 16:27:22
Cytuj
Nie wiem jak jest w D3D, ale to nie zmienia faktu, że na pierwszy rzut oka jest dziwne ;)
Jeżeli chodzi o odbicie w Y, to dziwny jest jedynie rysunek w specyfikacji. Jak załadujesz teksturę normalnie od lewego górnego rogu to też nic się nie stanie (a nawet wtedy będziesz miał klasyczne adresowanie). :)

Offline Moriquendi

  • Użytkownik

# Maj 07, 2009, 17:51:06
Nieczytanie FAQ jest na tym forum karane śmiercią.

EDIT:

A co do tych flag, to proponuję poczytać o mipmappingu i o sposobie przechowywania tekstur przez OpenGL.
Czytałem ten artykuł na wiki:
http://wiki.warsztat.gd/Unresolved_External_Symbol

Ale tam nie ma nic nowego. Dodałem tą nazwę biblioteki w -> Configuration Properties ->Linker -> Input i dodałem do projektu plik SOIL.h. Ale nic nie pomaga  ::)

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Maj 07, 2009, 18:02:42
Ale tam nie ma nic nowego. Dodałem tą nazwę biblioteki w -> Configuration Properties ->Linker -> Input i dodałem do projektu plik SOIL.h. Ale nic nie pomaga  ::)
Pewnie dlatego, że tam trzeba dodać pliki lib. ;)

Offline Moriquendi

  • Użytkownik

# Maj 07, 2009, 18:08:46

No przecież mówię, że wstawiłem. Nie działa   >:( :'(