.[ ČeskéHry.cz ].
hodnota barvy obrázku

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
frantta



Založen: 03. 12. 2009
Příspěvky: 11

PříspěvekZaslal: 15. únor 2010, 17:46:18    Předmět: hodnota barvy obrázku Odpovědět s citátem

Zdravím, potřebuji poradit jak získám v SDL (OpenGL) hodnotu (číslo) daného pixelu z obrázku - výškové mapy.
Taky bych chtěl potvrdit (vyvrátit) jestli je dobré (a možné) použít formát gif - 8 bitů - to by na výškovou mapu stačilo, popřípadě jaký formát by byl lepší...
Děkuji
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nou



Založen: 28. 07. 2007
Příspěvky: 1050

PříspěvekZaslal: 15. únor 2010, 18:26:10    Předmět: Odpovědět s citátem

struktura SDL_Surface ma pixels co su surove data pixelov obrazka. vid http://sdl.beuc.net/sdl.wiki/SDL_Surface

mas tam w,h co obsahuju vysku sirku obrazku potom pitch co je pocet bajtov na riadok obrazku.
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frantta



Založen: 03. 12. 2009
Příspěvky: 11

PříspěvekZaslal: 15. únor 2010, 19:06:09    Předmět: Odpovědět s citátem

Není mi jasné jek získám hodnotu určitého pixelu. Získám ho nějak pomocí surface->pixels?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



Založen: 28. 07. 2007
Příspěvky: 1561

PříspěvekZaslal: 15. únor 2010, 20:40:49    Předmět: Odpovědět s citátem

Lepší je png. Na přečtení použij libpng. Pak získání hodnoty pixelu probíhá pomocí této knihovny nezávisle na OpenGL nebo SDL. Pokud chceš nějaký příklad na použití libpng, SDL a OpenGL dohromady, tak tady. Zrovna to použití libpng je tam opravdu zjednodušené.
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
yaqwsx



Založen: 25. 02. 2008
Příspěvky: 66

PříspěvekZaslal: 15. únor 2010, 21:09:41    Předmět: Odpovědět s citátem

Přímý přístup k pixelům v SDL_Surface je popsán v seriálu o SDL na Rootu tady
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nou



Založen: 28. 07. 2007
Příspěvky: 1050

PříspěvekZaslal: 15. únor 2010, 22:10:57    Předmět: Odpovědět s citátem

ano cez surface->pixels. teda este predtym si to budes musiet asi pretypovat. ukazky mas aj tu http://nehe.ceske-hry.cz/cl_sdl_image.php a http://nehe.ceske-hry.cz/cl_sdl_picture.php
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frantta



Založen: 03. 12. 2009
Příspěvky: 11

PříspěvekZaslal: 15. únor 2010, 22:24:47    Předmět: Odpovědět s citátem

chtěl bych zkusit to png, jak v tom získám hodnotu daného pixelu? Nebo kde to najdu v tom zdrojáku?
Dikk
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



Založen: 28. 07. 2007
Příspěvky: 1561

PříspěvekZaslal: 15. únor 2010, 22:47:38    Předmět: Odpovědět s citátem

loadpng.cpp, loadpng.h (složka common)
Zaměř se na třídu LoadPng. Na získání pixelů je tam fce getpx.
Použití např.:
obrazek.getpx()[x+y*obrazek.getw()]; // píšu to z hlavy, přesnější (a kompletnější) příklad najdeš, když prohledáš všechny ty zdrojáky.
Hlavně si uvědom, že získaná hodnota je 32-bitový int ve tvaru RGBA. Takže konkrétní kanál si budeš muset odshiftovat/odmaskovat, případně použít pomocnou třídu ConvPng. Použití bude taky někde v těch zdrojácích.
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
frantta



Založen: 03. 12. 2009
Příspěvky: 11

PříspěvekZaslal: 15. únor 2010, 22:53:36    Předmět: Odpovědět s citátem

to nemůžu uložit png v 8bitovém formátu? Nepotřebuji barvy, 256 úrovní na výškovou mapu stačí...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nou



Založen: 28. 07. 2007
Příspěvky: 1050

PříspěvekZaslal: 15. únor 2010, 23:02:58    Předmět: Odpovědět s citátem

no to png moze byt ulozene ako 8 bitove ale je dost pravdepodobne ze napriek tomu sa to skonveruje na int. za druhe velkostne by mal byt 256 farebny obrazok rovnak ci je uz ulozeny ako 8bit alebo 24bit.
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



Založen: 28. 07. 2007
Příspěvky: 1561

PříspěvekZaslal: 15. únor 2010, 23:43:33    Předmět: Odpovědět s citátem

frantta napsal:
to nemůžu uložit png v 8bitovém formátu? Nepotřebuji barvy, 256 úrovní na výškovou mapu stačí...

Můžeš. Ta moje třída funguje tak, že každý obrázek převede na RGBA. Takže si klidně načti obrázek v 256-ti stupních šedé a pak použij pouze červený kanál. Toto je ale specifikum té mojí třídy, se samotnou libpng se dají dělat mnohem větší vylomeniny. Však jsem psal, že je to maximálně zjednodušené.
Najdi si ve zdrojácích třeba řetězec "brickwall01-bump.png". To je obrázek, o kterém se předpokládá, že je ve stupních šedi, a podle toho je s ním naloženo. Z tohoto příkladu můžeš vycházet při načítání svého vlastního obrázku ve stupních šedi.
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna