tBane Temat założony przez niniejszego użytkownika |
[C++] Pozycjonowanie obiektow w swiecie gry oraz ich poprawne renderowanie » 2023-08-07 12:30:49 Obiekty w grze powinny byc rysowane tak jak je widzimy w prawdziwym swiecie. Zeby w komputerze osiagnac zblizony efekt, nalezy liste obiektw posortowac tak, aby na poczatku listy byly obiekty najdalej polozone od kamery. Render obiektow w ten sposob, pozwala blizszym obiektom zaslaniac te dalsze. Teraz wprowadzamy kolejna funkcjonalnosc - baze obiektu. Baza obiektu, czyli jego podstawa ( kolo, elipsa ), ktora ma sluzyc do prawidlowego renderowania wzgledem swiata, jak i pozniej do sprawdzania kolizji w grze. sklad bazy obiektucx cy, scale; hr, vr; texw = texh = 128; wlasciwosci osii Osie ( x, y ) rosna w prawo i w gore. Punkt zero to srodek ekranu. wartosc osi [ (-scrw/2.f, scrw/2.f), (-scrh/2.f, scrh/2.f) ]. Tekstury sa rysowane wzgledem srodka tzn ( x, y, x-width/2.f, height/2.f ); Zadaniem naszym jest render textury wzgledem pozycji tej elipsy, czyli podanie poprawnych wzorow dla rysowania textury obecne wzory, ktore nie dzialaja: float x = x - tw / 2.f * s +( cx * s + 1.f ) - cam->x; float y = y - th / 2.f * s +( cy * s + 1.f ) - cam->y;
ps1. Wrzuciłem ten post, by w razie utraty danych mieć backup. ps2. Chat GPT nie pomógł :-/ |
|
DejaVu |
» 2023-08-07 13:07:41 Po prostu włącz Z-buffer, który rozwiązuje problem kolejności 'renderowania' wszystkiego. |
|
tBane Temat założony przez niniejszego użytkownika |
» 2023-08-07 13:20:55 Nie mam Z-Buffera. Tworzę grę 2D w C++, SDL2 oraz opengles2 .. No więc, wzór w tym przypadku jest niezbędny. Liczę od dwóch dni i nadal nie wyliczylem tego co potrzebuje, więc jak masz jakiś pomysł to będę wdzięczny :-) A tu taki bonus, którym się motywuje :D https://m.youtube.com/watch?v=_ewr2o0PEzc |
|
DejaVu |
» 2023-08-07 16:48:25 To włącz w 2D bufor 3D? To w niczym nie przeszkadza. Jeżeli masz sprajty 2D i musisz je rysować w odpowiedniej kolejności, to wystarczy obiekty posortować wg 'warstwy' (koniecznie stable sort, aby tekstury nie migały na tym samym poziomie).
Jeżeli robisz grę 2D z teksturami 2D (bez modeli 3D) to czemu nie używasz SFML-a, który ma renderowanie i rotacje tekstur z ładnym API zapewnionym? :) |
|
pekfos |
» 2023-08-07 16:58:20 Jeszcze przed chwilą robiłeś to w 3D. Czy te 2D to nie jest 3D po projekcji? Takie podejście zadziała tylko gdy wszystko jest billboardami, tj prostopadłe do kamery. W ogólnym przypadku wielokąty mogą się dowolnie przecinać. Depth test określa widoczny obiekt niezależnie dla każdego piksela ekranu, zwykłe sortowanie nie da rady. Wrzuciłem ten post, by w razie utraty danych mieć backup. Robisz tu backup 5 linii kodu? Serio, rozpoznaj jakieś systemy kontroli wersji. Skoro robisz backupy w postach na forum, to może załóż projekt open source na githubie..? |
|
tBane Temat założony przez niniejszego użytkownika |
» 2023-08-07 18:34:19 Nie, otóż projekt "Terrain War" zawiesilem na czas nieokreślony, wewnętrzny ból, weltschmerz i ogólne uczucie pustki nie pozwalają mi jeszcze na kontynuowanie pracy. W celu ukojenia tego uczucia postanowiłem rozpocząć pracę nad nowym projektem. Otóż tworzę grę 2D RPG przygodowa w podobnym klimacie.
Tworzę obecnie edytor map.
Nie chce aby mój projekt był Open-Source, no kto by chciał się dzielić za darmo czymś nad czym spędził wiele dni, miesięcy? Jeśli ktoś z tego forum będzie potrzebował pomocy lub rad, to chętnie podzielę się wiedzą i doświadczeniem, ale całego projektu nie zamierzam oddawać.
Niebawem, gdy skończę edytor, system skryptów i powstaną pierwsze zalążki gry, wrzucę jakies screeny :-) |
|
tBane Temat założony przez niniejszego użytkownika |
» 2023-08-12 10:33:21 Post usunięty przez moderatora |
|
« 1 » |