[#1] [WB, Okno, RTG] Renderowanie do publicznego okna WB
Cześć,
Pracuje nad tym aby mój projekt Raycastera mógł być wyswietlany w różnych trybach.
Na razie mam gotowe wyświetlenie na pełnym ekranie RTG oraz w trybie HAM8.
Chciałbym również aby była mozliwość otworzenia "gry" w oknie workbencha (w trybie RTG).

Obecnie zrobiłem to za pomocą:
WritePixelArray(output_buffer_32, 0, 0, bytes_per_row, FRM_window->RPort, 0, 0, output_width, output_height, output_pixel_format );


I generalnie to działa i wygląda jak poniżej:




Jednak mam kilka uwag, i może Ktoś coś podpowie.

1. Pierwsza sprawa.
W obecnym momencie po prostu kopiuje za pomoca WritePixelArray() do okna czyli do jego Rastportu,
co powoduje że mamy tylko jeden bufor i pojawia się efekt screen tearing.
Więc chciałbym mieć łącznie 2 lub 3 bufory tak jak w przypadku fullscreen RTG lub HAM8. Tyle tylko że
tam mam otwarty screen i podmieniam bitmapy i jest git.
W przypadku Ona WB mam tylko Rastport do którego koiuje za pomocą WritePixelArray(), no i nie wiem jak to ogarnąć.
W poprzednich przypadkach gdy mam dwa bufory korzystam z RethinkDisplay() i mam to dodatkowo zsynchronizowane.
Czy wiecie jak to ogarnać w przypadku okienka?

2. Druga sprawa.
Gdy poruszam myszą no to obracam głową jak to w Raycasterze, ale kursor moze wyjść poza okno, jesli wtedy wciśnę "lewy przycisk" to tracę
"focus" z okna gry. Macie pomysł jak to ogarnąć?

Dałem podobny wątek na EAB, dostałem odpowiedz trochę typu "nie da się", ale nie jestem w pełni zadowolony,
przecież są gry które pracują w oknie.

Czy może jednak to bez sensu robić to wyświetlanie w oknie Workbencha i olać to?
Tak czy inaczej puplit WB musiałby być w 32bit RTG.

Poniżej odpowiedż z EAB:
http://eab.abime.net/showthread.php?t=114012
[#2] Re: [WB, Okno, RTG] Renderowanie do publicznego okna WB

@mateusz_s, post #1

1. Pierwsza sprawa.
W obecnym momencie po prostu kopiuje za pomoca WritePixelArray() do okna czyli do jego Rastportu,
co powoduje że mamy tylko jeden bufor i pojawia się efekt screen tearing.

Ażeby pozbyć się screen tearingu można zsynchronizować rysowanie z ramką za pomocą WaitTOF() lub własnej obsługi tego przerwania (np. AddTOF() z amiga.lib).

Warto też skorzystać z bitmapy zaprzyjaźnionej z bitmapą ekranową.

Więc chciałbym mieć łącznie 2 lub 3 bufory tak jak w przypadku fullscreen RTG lub HAM8. Tyle tylko że
tam mam otwarty screen i podmieniam bitmapy i jest git.

Dodatkowe bufory ekranu możesz utworzyć za pomocą AllocScreenBuffer() jednakże musisz zadbać o to, by reszta ekranu była zsynchronizowana. Najłatwiej to uzyskać włączając podwójne buforowanie tylko wówczas, gdy na warstwę okna nałożona jest blokada za pomocą LockLayer(0, w->WLayer). Wtedy nikt poza Tobą nie będzie mógł w ekran rysować.

Ja dodatkowo korzystam z własnej obsługi ClipRectów, czyli składowych okna, by np. liczyć tylko widoczną grafikę.

2. Druga sprawa.
Gdy poruszam myszą no to obracam głową jak to w Raycasterze, ale kursor moze wyjść poza okno, jesli wtedy wciśnę "lewy przycisk" to tracę
"focus" z okna gry. Macie pomysł jak to ogarnąć?

W zasadzie żeby zablokować kursor myszy trzeba zainstalować własną funkcję obsługi myszy poprzez input.device, która będzie filtrować wiadomości o ruchu myszy (IECLASS_RAWMOUSE).

Mam pytanie: dlaczego jeszcze nie dodałeś potworów do swojego Raycastera? Przyznam, że nie mogę doczekać się czegoś grywalnego.
1
[#3] Re: [WB, Okno, RTG] Renderowanie do publicznego okna WB

@Hexmage960, post #2

Dzięki za podpowiedź..
chyba jednak wywale ten tryb okienkowy - za dużo srania się z tym, szkoda czasu, po co to w oknie otwierać
tylko wolniej będzie.. a i tak WB musiałby pracować w 32bit wiec mozna na fullscreen otweirać,
a dla bez RTG-owców można w HAM8 też odpalić..

Tak, nie mam jeszcze jeszcze sprajtów - wstyd..

Od jakiegoś czasu kończę właśnie nowy build v0.36 - z masą nowych rzeczy, głownie na plus.
całą geometrię juz zrobiłem co chciałem + różne rodzaje drzwi.

Miałem przygotowany mały poziom testowy - gdzie okazało się, że lighmapy można wykorzystać dodatkowo
do nałozenia drugiej warstwy textur - tak jakby z brudami - co robiło mega efekt - tylko, że był bład w edytorze
i mi sie level zepsuł a potem zaczalem pracować nad nowym starterem, i obsługą HAM8.

coś takiego:
https://streamable.com/yehiae


Z takich ciekawszych rzeczy to pięknie śmigało na niepodkręcanym CyberStorm Mk2 68060 50 Mhz coś ponad 20 fps
4
[#4] Re: [WB, Okno, RTG] Renderowanie do publicznego okna WB

@mateusz_s, post #3

Mega szacun! Zajebiście.
1
[#5] Re: [WB, Okno, RTG] Renderowanie do publicznego okna WB

@mateusz_s, post #3

Dzięki za podpowiedź..
chyba jednak wywale ten tryb okienkowy - za dużo srania się z tym, szkoda czasu, po co to w oknie otwierać
tylko wolniej będzie.. a i tak WB musiałby pracować w 32bit wiec mozna na fullscreen otweirać,
a dla bez RTG-owców można w HAM8 też odpalić..

Na karcie RTG powinno być szybko.

Ale oczywiście lepiej otwierać na własnym ekranie.

Możesz też otworzyć okno na cały ekran Workbencha, wyciągnąć na wierzch i mieć dostęp do całej bitmapy.

Ja lubię okienka i je stosuję - bo interfejs jest bardziej przyjazny i elastyczny.

Tak, nie mam jeszcze jeszcze sprajtów - wstyd..

Od jakiegoś czasu kończę właśnie nowy build v0.36 - z masą nowych rzeczy, głownie na plus.
całą geometrię juz zrobiłem co chciałem + różne rodzaje drzwi.

Nie rozumiem dlaczego jeszcze walczysz z prędkością. Czy nie osiągnąłeś zadowalającej prędkości?

Tak jak kiedyś pisałem, logika gry jest mniej wymagająca niż rysowanie, bo trzeba przejrzeć obiekty, zaktualizować ich stan. Liczba obiektów do przejrzenia to np. jakieś 10-50. Rysowanie odbywa się na 64000-81920 pikselach bądź więcej, więc algorytm jest wymagający.

Drzwi należą do tej puli obiektów.

Nawet na szybkim sprzęcie trzeba optymalizować. Gra takiego typu + procesor M68k + wysoka rozdzielczość mogą nie iść w parze. Możesz rozważyć pisanie dla PowerPC, jeśli koniecznie chcesz mieć wysoką rozdzielczość.

Ostatnia aktualizacja: 23.03.2023 07:16:34 przez Hexmage960
1
[#6] Re: [WB, Okno, RTG] Renderowanie do publicznego okna WB

@Hexmage960, post #5

Nie , no właśnie już nie walcze z prędkością .
Mam tyle ile chciałem a nawet wiecej :)

Po prostu ostatnio dodawałem rozne rodzaje ścian
Oraz dzwi. Niestety sprajty jeszcze nie liźnięte,
[#7] Re: [WB, Okno, RTG] Renderowanie do publicznego okna WB

@mateusz_s, post #6

jak dla mnie w trybie okienkowym po prostu wyłącz obsługę myszki i zostaw tylko klawiaturę
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem