2010-12-14 5 views
5

Rysuję sprite (kuli) na elemencie płótna. Ponieważ jednak piłka porusza się, pozycja x lub y kuli może stać się ułamkiem, np. (20,153; 63,638). Gdy do narysowania tego obrazu zostanie użyte płótno, spróbuje użyć przezroczystych pikseli, aby uzyskać dokładniejszą prezentację piłki w jej położeniu.Czy unikniesz rysowania półpiksela w kanwie HTML5, by poprawić szybkość?

Zastanawiam się, czy powinienem użyć Math.round() przed rysowaniem piłki, aby uniknąć przezroczystego piksela, a może nawet znacznie przyspieszyć grę. Czy to bardzo pomoże? Gra jest złożoną grą typu pong.

Obrazek poniżej powinny pomóc z moim wyjaśnieniem:

+1

To, czy przyspieszy, zależy od implementacji przeglądarki 'Canvas'. – Gabe

+0

Czy możesz podać adres, aby zagrać w grę? – cuixiping

Odpowiedz

4

Przynajmniej this guy seems to believe so. Jak wspomniał Gabe, zależy to od implementacji.

Pamiętaj, że niektóre wygładzanie sortowania wydaje się działać, jeśli używasz zwykłych współrzędnych (1, 14 itd.). Z tego powodu niektórzy przewodnicy (głównie) wydają się sugerować, że lepiej będzie, jeśli wykorzystasz półpiksele (np. 1,5, 14,5 itd.). Nie wiem, czy to ma wpływ na wydajność. Jest to zauważalne na co najmniej wyniku renderowania.

Można również eksperymentować z różnymi schematami warstw. Aby uzyskać więcej informacji, patrz this question. W zależności od sytuacji możesz potraktować swoje obiekty jako osobne płótna i po prostu przesunąć je na wierzchu tła.

Alternatywnie można spróbować renderować wszystko na jednym płótnie. W tym przypadku masz kilka dodatkowych rzeczy do zapamiętania. This library wydaje się obsługiwać wszystkie księgi rachunkowe dla Ciebie.

+1

Dzięki bebraw. Myślę, że kiedy skończę grę, po prostu przetestuję różnice w wydajności i wyglądzie. Myślę, że przetestuję to także w różnych przeglądarkach. – mike

+0

Cool. Byłoby wspaniale, gdybyś mógł opublikować swoje wyniki. Powodzenia. :) –

+0

+1 za sugerowanie duszków na osobnych płótnach (lub nawet standardowych elementach HTML z tłem). – Phrogz