-
1. Data: 2013-01-24 09:59:00
Temat: Trwale elementy w OpenGL
Od: Marcin L <"xxxl kropka marcin"@gmail.com>
Witam,
Rozpoczalem przygode z OpenGL w C. Umie tworzyc scene, obracac, ogladac z
kazdej strony, ale nie wiem jak pokazac "trwale" obiekty, ktore zawsze beda
w okreslonej pozycji w okreslonym miejscu.
Chcialbym np. podpisac sobie jakis obiekt i zeby ten napis byl zawsze w
okolicy danego obieku, ale nie obracal sie wraz z nim. Pewnie mo -
2. Data: 2013-01-24 13:38:11
Temat: Re: Trwale elementy w OpenGL
Od: Michoo <m...@v...pl>
On 24.01.2013 09:59, Marcin L wrote:
> Pewnie mo?liwe, bo
> czesto jest tak w np. grach, gdzie mozna wlaczyc sobie opcje podpisywania
> samolotow czy innych czolgow.
>
> Od razu chodzi, ze nie chodzi mi tylko o "bitmapy" 2G.
Ale podpisy się właśnie tak robi - tzw "billboard", czyli GL_POINT_SPRITE.
> Interesuje mnie jak
> jest tworzony obraz nieruchomej kabiny samolotu i ruchoma "scena" tego co
> widac za oknem.
Tak jak każda inna złożona scena:
push matix
translate/rotate
rysowanie kabiny
pop matrix
push matrix
translate/rotate
rysowanie całej reszty
pop matrix
push matix
translate/rotate
rysowanie przezroczystych elementów kabiny
pop matrix
--
Pozdrawiam
Michoo
-
3. Data: 2013-01-25 13:45:23
Temat: Re: Trwale elementy w OpenGL
Od: Marcin L <"xxxl kropka marcin"@gmail.com>
Dnia 24.01.2013 Michoo <m...@v...pl> napisał/a:
> On 24.01.2013 09:59, Marcin L wrote:
>> (...)
> Ale podpisy się właśnie tak robi - tzw "billboard", czyli GL_POINT_SPRITE.
>
>> Interesuje mnie jak
>> jest tworzony obraz nieruchomej kabiny samolotu i ruchoma "scena" tego co
>> widac za oknem.
>
> Tak jak każda inna złożona scena:
> (...)
Wielkie dzieki, o to wlasnie chodzilo! W tym OpenGL wszystko jest tylko
trzeba wiedziec jak sie co nazywa.
Mam jeszcze tylko pytanie ad. kolejnosci rysowania: napisales - kabina,
reszta, przezroczyste elementy. Czy taka kolejnosc jest wazna?
--
ml
http://www.archimedes.eu.org/
-
4. Data: 2013-01-25 15:31:09
Temat: Re: Trwale elementy w OpenGL
Od: Michoo <m...@v...pl>
On 25.01.2013 13:45, Marcin L wrote:
>
> Wielkie dzieki, o to wlasnie chodzilo! W tym OpenGL wszystko jest tylko
> trzeba wiedziec jak sie co nazywa.
Przeczytaj Red Book - tam jest wyjaśnione jak OpenGL liczy scenę.
>
> Mam jeszcze tylko pytanie ad. kolejnosci rysowania: napisales - kabina,
> reszta, przezroczyste elementy. Czy taka kolejnosc jest wazna?
>
W skrócie:
- "przezroczystość" działa tak, że liczy się średnią ważoną z piksela
który trafia do bufora i piksela który tam już jest (wagą jest alpha),
więc to co przezroczyste musi być rysowane po tym co ma przez nie
prześwitywać [1]
- jeżeli jakieś elementy są częściowo zasłaniane przez inne to opłaca
się je rysować później bo będą policzone tylko te piksele, które są
widoczne [2] - na ekranie masz to samo, ale np 30% szybciej.
[1] odwrotna sytuacja zachodzi, gdy przezroczystość jest tylko w dwóch
stanach: widać całość, nie widać nic (liście, płoty, etc). Wtedy lepiej
rysować zgodnie z 2 myślnikiem, nie aktualizując z-bufora przy pełnej
przezroczystości, np:
if(texture2D(TEX_N, gl_TexCoord[0].xy).g < 0.5)
discard;
[2] w skrajnym przypadku gdy "kokpit" się zupełnie nie zmienia można go
RAZ narysować do dodatkowego bufora a potem tylko kopiować
--
Pozdrawiam
Michoo
-
5. Data: 2013-01-31 15:25:34
Temat: Re: Trwale elementy w OpenGL
Od: Marcin L <"xxxl kropka marcin"@gmail.com>
Dnia 25.01.2013 Michoo <m...@v...pl> napisał/a:
> On 25.01.2013 13:45, Marcin L wrote:
>>
>> Wielkie dzieki, o to wlasnie chodzilo! W tym OpenGL wszystko jest tylko
>> trzeba wiedziec jak sie co nazywa.
>
> Przeczytaj Red Book - tam jest wyjaśnione jak OpenGL liczy scenę.
Juz sciagnalem. B. ciekawa lektura, tylko ta objetosc... :-)
> W skrócie:
> - "przezroczystość" działa tak, że liczy się średnią ważoną z piksela
> który trafia do bufora i piksela który tam już jest (wagą jest alpha),
> więc to co przezroczyste musi być rysowane po tym co ma przez nie
> prześwitywać [1]
(...)
Fakt. Myslalem, ze wynika to raczej z jakis wewnetrznych mechanizmow
kolejnosci mnozenia macierzy przeksztalcen.
Czytalem takze o wspomnianych przez Ciebie bilboradach. Pierwsze
spostrezenie - to dodatkowe rozszerzenie (przynajmniej w peirwszych
wersjach) i nie zawsze wystepuje we wszystkich systemach. Do konca tez nie
rozumie ich ideii.
--
ml
http://www.archimedes.eu.org/
-
6. Data: 2013-01-31 16:11:34
Temat: Re: Trwale elementy w OpenGL
Od: Michoo <m...@v...pl>
On 31.01.2013 15:25, Marcin L wrote:
> Dnia 25.01.2013 Michoo<m...@v...pl> napisał/a:
>> On 25.01.2013 13:45, Marcin L wrote:
>>>
>>> Wielkie dzieki, o to wlasnie chodzilo! W tym OpenGL wszystko jest tylko
>>> trzeba wiedziec jak sie co nazywa.
>>
>> Przeczytaj Red Book - tam jest wyjaśnione jak OpenGL liczy scenę.
>
> Juz sciagnalem. B. ciekawa lektura, tylko ta objetosc... :-)
W liceum wydrukowałem i dałem do oprawy - nadal stoi u mnie na półce ;)
>
> Czytalem takze o wspomnianych przez Ciebie bilboradach. Pierwsze
> spostrezenie - to dodatkowe rozszerzenie (przynajmniej w peirwszych
> wersjach) i nie zawsze wystepuje we wszystkich systemach.
Możesz założyć, ze sensowne implementacje opengl zaczynają się od 2.0
(ew. 1.5 + vertex/fragment program). Starszymi imo nie warto się zajmować.
> Do konca tez nie
> rozumie ich ideii.
1) nie przejmujesz się przeliczaniem współrzędnych
2) Wysyłasz do karty po jednym punkcie na każdy kwadrat. Normanie
musiałbyś wysłać 2*3 dla TRIANGLES albo 4 dla QUADS, więc ślesz 4-6 razy
mniej danych. Pomyśl teraz o efekcie cząsteczkowym z 100-200k wierzchołkami.
--
Pozdrawiam
Michoo