jest moc!
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
Atari 8-bit Rom Image File Explorer Nowa wersja przynosi szereg istotnych ulepszeń i nowych funkcji.
Atari Font Maker V1.6.16.0 Nowa wersja narzędzia do tworzenia fontów i map.
Turgen 9.4.0 Nowa wersja Turgen - popularnego narzędzia do tworzenia kaset dla komputerów Atari.
TileT Przeglądarkowy edytor map stworzony specjalnie z myślą o trybie tekstowym z kolorami i kwadratowymi pikselami
FujiNET firmware v1.5.0 Nowa wersja firmware, która wprowadza szereg ulepszeń i poprawek.
atari.area forum » Programowanie - 16/32bit » Algorytm obcinania wielokątów
Strony Poprzednia 1 2
Zaloguj się lub zarejestruj by napisać odpowiedź
jest moc!
Dzisiaj po południu powinienem wrzucić gotową wersję i powiem tylko tyle: drukuje kod, tapetuję ścianę i codziennie się do niego modlę :P Niestety nie mam chyba możliwości (halo panie adminie :)) wrzucenia obrazka z wersji przed i po, ale trójkąt w 4 planach, oczywiście na cały ekran zabiera tylko około 52% czasu ramki!!!
Podsyłam obiecaną wersję. Doszło kilka flag, którymi można manipulować: clipOn - włącza/wyłącza clipping, debug - wersja pomocna w czasie debugowania kodu - teraz działanie programu można przejrzeć (oczywiście w debugerze) w sposób łatwy, prosty i przyjemny. Wersja jest już bardzo mocno zoptymalizowana i jedyne co można jeszcze zrobić, to rozwinąć pętlę rysującą linie poziome - uwalniamy wtedy jeden rejestr na wprowadzenie optymalizacji pod kątem adresowania blittera. Tak swoją drogą, to tylko dwóch optymalizacji adresowych zabrakło mi do pełnej optymalizacji pętli wypełniającej - jeszcze dwa rejestry i byłoby genialnie, a tak jest tylko super :P )
Edit: Kurde! Dla linii dłuższych od 16 pix. (dla krótszych musi być bra, więc będzie podobnie jak w pętli) do wyciągnięcia jest od 12 do 16 cykli zegara plus 4 na optymalizację adresową. Hmmmm... :D
Gratulacje! Ostatnio nie sledziłem Waszych kodów i trochę się pogubiłem bo nigdy nie używałem line number, smudge i halft tone blitter'a. Będę musiał w końcu to prześledzić i przeanalizować. Anyway prędkość jest znacznie większa niż mojej wypełniarki. Piszcie demo!
nie zaglądałem jeszcze do kodu ale mam w głowie jeszcze jedną optymalizację.
Jeśli adres ekranu (ekranów) będzie zaczynał się od pełnej 16bitowej strony, np $10000, wtedy:
- zapisujemy tylko jedno - młodsze słowo do dstAddr BLiTTERa (4 cykle oszczędzone);
- zastępujemy "add.l (a5)+,d0" przez "add.w (a5)+,d0" w poniższym kodzie (4 cykle oszczędzone):
movem.w (a2)+,d0-d3 ;left x offset, right x offset, left mask, right mask
sub.w d0,d1 ;line width
ext.l d0
add.l (a5)+,d0
asr.w #3,d1
bgt.s .multi_words
W takim razie może uda się zejść poniżej 50% czasu ramki :D
No i w końcu jest... Wersja ekstremalna z rozwiniętą pętlą wypełniającą. :) I znowu 9 scanlinii mniej :D
Edit: Tylko źródła jeszcze dodam :P
Strony Poprzednia 1 2
Zaloguj się lub zarejestruj by napisać odpowiedź
atari.area forum » Programowanie - 16/32bit » Algorytm obcinania wielokątów
Wygenerowano w 0.024 sekund, wykonano 34 zapytań