kategoria: ANSI C
[#1] Interleaved Viewport na KS 1.3 - jak?
Właśnie... Jak? Najlepiej w czystym C (jest to w ogóle możliwe?), albo przykład jakiegoś krótkiego kodu asemblerowego, co by dało radę go zawrzeć w funkcjach dla C. Inicjowanie takiego viewporta i zmuszenie Amigi do jego wyświetlenia w taki sposób.

Przypominam, że CreateBitMap() nie istnieje na 1.3 :)

Po co? Ano po to, że mam problem z prędkością blitowania. Z tego co rozumiem, to interleaved zamiast wykonywania ilości blitów równej ilości bitplane'ów pozwala na blitowanie całości jednym blitem. Bardzo mnie kusi tego zastosowanie. Tylko wtedy, czy odpada mi stosowanie RxOffset i RyOffset struktury RasInfo?
[#2] Re: Interleaved Viewport na KS 1.3 - jak?

@teh_KaiN, post #1

Mój pomysł jest taki:

1. Zaalokuj pamięć na ekran w jednym kawałku. Czyli zamiast użyć powiedzmy 5 razy AllocRaster to użyj raz AllocMem z odpowiednimi atrybutami.
2. Stwórz strukturę BitMap i odpowiednio poustawiaj wskaźniki na poszczególne bitplany.

I chyba powinno działać ( pewnie trzeba będzie ustawić modulo odpowiednio także w copperliście).

Takie luźne uwagi:

Jeśli chodzi o blitowanie interleaved to w przypadku robienia tego z maską, trzeba pamiętać że maska zajmuje tyle samo co źródło. Innymi słowy w przypadku interleaved potrzebujesz więcej miejsca na maski dla obiektów graficznych.

Szybciej to by było użyć metody kombinowanej czyli CPU + BLITTER. Czyli zamiast czekać aż blitter skończy to w tym czasie kopiować procesorem. A jeśli nie używasz mocno coppera ( zmiany kolorów co linia, multipleksowanie sprajtów) to można blitowanie wsadzić w copperlistę i Copper wtedy będzie czekał na koniec blitu.

Napisz więcej co blitujesz (rozmiar i ilość bitplanów) i ile tego blitujesz.
[#3] Re: Interleaved Viewport na KS 1.3 - jak?

@asman, post #2

Dzięki za odpowiedź.

Co do stworzenia bitmapy to tak, to jest akurat proste. Aktualnie jeszcze się nie bawiłem systemem modulo, nawet nie mam zbytnio pomysłu jak to ugryźć w czystym C. I właściwie tak powinno brzmieć pytanie, jak zrobić żeby viewport taką bitmapę wyświetlał? :)

Co robię? Ano gierkę kafelkową podwójnie buforowaną z bobami zamiast sprajtów, bo jednak potrzebuję trochę więcej kolorów niż 4 na sprajt, a składanie ich w pary raczej odpada.

Co mnie przeraża, to to, że stworzyłem sobie bitmapę 5BPP 320x256, na niej wyświetlam 20 bobów (docelowo zmienna liczba) również 5BPP (testowałem też nawet na 1BPP) i mi to wszystko niewyobrażalnie zamula na mojej A500, zwłaszcza przy opcji SAVEBACK. Próbowałem porzucić system bobów na rzecz czystych blitów i było nieporównywalnie lepiej, choć nadal nie idealnie, ale tylko do czasu kiedy nie zacząłem blitować przez maskę za pomocą BltMaskBitMapRastPort. Wtedy prędkość spadła do niewiele lepszej od tej, jaką miałem przy bobach.

Na chwilę obecną coppera nie używam w ogóle i raczej mocno używać w samej grze nie planowałem, także można by go wykorzystać.

Czy API AmigaOS jest aż tak niewydajne, czy to ze mną jest coś nie tak?

Ostatnia aktualizacja: 07.10.2013 07:39:04 przez teh_KaiN
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