-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.task.gda.pl!not-for-mail
From: zażółcony <r...@c...pl>
Newsgroups: pl.comp.programming
Subject: Re: dalsza optymalizacja
Date: Mon, 02 Apr 2012 10:40:16 +0200
Organization: CI TASK http://www.task.gda.pl/
Lines: 59
Message-ID: <jlbole$p9j$1@news.task.gda.pl>
References: <jl73ie$b6f$1@inews.gazeta.pl>
NNTP-Posting-Host: efp194.internetdsl.tpnet.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: news.task.gda.pl 1333356014 25907 83.14.249.194 (2 Apr 2012 08:40:14 GMT)
X-Complaints-To: a...@n...task.gda.pl
NNTP-Posting-Date: Mon, 2 Apr 2012 08:40:14 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20120327
Thunderbird/11.0.1
In-Reply-To: <jl73ie$b6f$1@inews.gazeta.pl>
Xref: news-archive.icm.edu.pl pl.comp.programming:196534
[ ukryj nagłówki ]W dniu 2012-03-31 16:15, generał kenobi pisze:
> ten sposob rysowania rotowanej bitmapy jest fenomenalny
> swoja prostota
>
> for(int j=0; j<sprite_height; j++)
> {
> for(int i=0; i<sprite_width; i++)
> {
> SetPixel( x>>20, y>>20, sprite[j][i] );
>
> x += dxdx; // skosy/ poprawki dla ruchu pixele na fiz ekranie
> y += dydx; // dla ruchu po tekselach x++
> }
>
> x += dxdy; // skosy dla y++
> y += dydy;
> }
>
> tu raczej nie da sie nic poprawic - ale chcialbym jakos moze
> poprawic sama funkcje stawiania pixela
Moim zdaniem właśnie tu możesz poprawić.
Iteracje są z równym krokiem, są to więc funkcje liniowe,
ściśle monotoniczne. Jak rysujesz wiersz to wystarczy, że jeden piksel
wyjdzie Ci poza ekran, a już wiesz, że cała końcówka wyszła i nie musisz
tego dalej renderować, idziesz do nast. wiersza.
Niby trochę gorzej z lewą stroną, bo musisz wiedzieć, kiedy 'wejść
na ekran', jak Ci obcina początek. Ale w gruncie rzeczy to jest
podobny problem, wystarczy znaleźć jeden piksel, który jest w ekranie i
jechać w prawo i w lewo od niego tak długo, aż nie wylezie poza ekran,
reszta nas nie interesuje.
Jak mi się zdaje, Twoje tekstury są bardzo duże, więc potencjalnie
zawsze duża część może wyłazić poza ekran.
A tak ogólnie, to imo najlepiej z góry sprawdzić, czy tekstura
musi być poobcinana (clip), czy mieści się cała. Jak będziesz
miał dużo małych tekstur i większość będzie całkowicie wchodzić
w ekran to bez sensu jest robić te warunki. Robisz dwie
osobne procedury - na maksa wydajna bez clippowania i ta, co
masz wyżej - obcinająca. Przed renderowaniem sprita robisz
test położenia wszystkich wierzchołków, jeśli wszystkie
są w ekranie, to odpalasz bez żadnego clipowania maksymalnie
prostą.
A tak w ogóle, to Twój algorytm bym 'odwrócił'. Ty poszedłeś
w kierunku takim, że każdy piksel tekstury wyświetlasz
raz na ekranie. Ten algorytm wyklucza np. powiększanie a nawet
przy samym obrocie jestem pewien, że już będziesz miał sitko
z dziurkami. Przy pomniejszaniu będzie masakrycznie niewydajnie.
Dlatego powinieneś robić to od drugiej strony: iterować
po x/y ekranowych, a dx i dy powinny wskazywać kroki
w teksturze. Dla każdego piksela ekranowego pobierasz
z tekstury kolor i tyle. Wtedy clipowanie będzie również
prostsze.
Przy takim podejściu masz tylko troszeczkę trudniej, bo x i y
ekranowe idą skosami, więc jest trochę więcej roboty w ustalaniu
pierwszego x kolejnego wiersza.
Następne wpisy z tego wątku
- 02.04.12 10:46
- 02.04.12 11:46
- 02.04.12 14:58 bartekltg
- 02.04.12 15:00 bartekltg
- 02.04.12 15:22 M.M.
- 02.04.12 15:55 M.M.
- 02.04.12 16:16 bartekltg
- 02.04.12 17:11 M.M.
- 02.04.12 17:31 Michoo
- 02.04.12 18:25 bartekltg
- 02.04.12 18:30 M.M.
- 02.04.12 18:47 Michoo
- 02.04.12 18:49 M.M.
- 02.04.12 18:51 M.M.
- 02.04.12 19:25 Edek Pienkowski
Najnowsze wątki z tej grupy
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
Najnowsze wątki
- 2025-08-06 Gdynia => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-08-06 Białystok => Inżynier oprogramowania .Net <=
- 2025-08-06 "[...] sejmowe wystąpienie posłanki Klaudii Jachiry, która zakończyła je słowami ,,Sława Ukrainie"."
- 2025-08-05 "Chiny przekraczają w wydobyciu 4 mld ton węgla, Indie i USA ponad 1 mld, a Rosja 500 mln ton [...]"
- 2025-08-05 Panuje się 181 159,42 zł./mies. na posła w 2026r.
- 2025-08-05 "Chiny przekraczają w wydobyciu 4 mld ton węgla, Indie i USA ponad 1 mld, a Rosja 500 mln ton [...]"
- 2025-08-05 Czy cos fi przechodzi przez trafo separujące?
- 2025-08-05 kajaki i promile
- 2025-08-05 Re: Tesla jest bezpieczna, wczoraj spaliła się doszczętnie na Ursynowie i nikomu się nic nie stało
- 2025-08-05 Gdynia => Przedstawiciel handlowy / KAM (branża TSL) <=
- 2025-08-05 Re: Atak na lekarza w Oławie. Policja zatrzymała sprawcę na lotnisku Polska Agencja Prasowa 4 sierpnia 2025, 12:16 FACEBOOK X E-MAIL KOPIUJ LINK W szpitalu w Oławie 37-letni pacjent zaatakował lekarza, po tym, jak ten odmówił mu wypisania długoterminowego
- 2025-08-05 B2B i książka przychodów i rozchodów
- 2025-08-04 Re: Atak na lekarza w Oławie. Policja zatrzymała sprawcę na lotnisku Polska Agencja Prasowa 4 sierpnia 2025, 12:16 FACEBOOK X E-MAIL KOPIUJ LINK W szpitalu w Oławie 37-letni pacjent zaatakował lekarza, po tym, jak ten odmówił mu wypisania długoterminowego
- 2025-08-04 Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- 2025-08-04 Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML