Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Potrójne buforowanie

Ostatnio zmodyfikowano 2009-08-01 21:34
Autor Wiadomość
Dragonit
Temat założony przez niniejszego użytkownika
Potrójne buforowanie
» 2009-08-01 20:37:38
Mam image.bmp(powiedzmy pilka)
- mam właczone podwojne buforowanie lecz:
gdy przesuwam image.x po ekranie z duża szybkoscia to ono sie rozdwaja.
Nie wiem czy to zludzenie optyczne lecz slyszalem o 3buforowaniu
ktore powinno zalatwic sprawe. Ale jak to zalapac do swojego kodu?
P-8947
DejaVu
» 2009-08-01 20:45:12
Yyyy? potrójne buforowanie to rozwiąże? ;p wątpię, ale jak to udowodnisz to chętnie zobaczę :P
P-8949
Dragonit
Temat założony przez niniejszego użytkownika
» 2009-08-01 20:50:10
No mam nadzieje ze pomoze :) A jesli znacie lepsze pomysly, dajcie znac.
P-8950
Dragonit
Temat założony przez niniejszego użytkownika
» 2009-08-01 21:00:55
A możę to byc wina monitora? Moze... Nie mam nawet opisu ile klatek na sekunde wyswietla. Bo to jest tak: pilka nie przechodzi plynnie przy wiekszej predkosci po ekranie i nie wiem czemu. Dam znac jutro, moze cos wykombinuje przez noc...
P-8951
DejaVu
» 2009-08-01 21:04:14
Żeby wyjaśnić, co to jest Tripple buffering (potrójne buforowanie), trzeba najpierw wiedzieć, co to jest podwójne buforowanie (double buffering).
A więc, gdyby rysować obraz bez żadnego buforowania, to strasznie by migotał - trzeba by co klatkę czyścić ekran i rysować od nowa kolejne klatki animacji, rysowanie trwa trochę czasu.
Wymyślono więc (już dawno temu) coś, co się nazywa podwójnym buforowaniem.
Idea opiera się na fakcie, że skopiowanie zawartości jakiegoś obszaru pamięcie do innego (tego, który jest aktualnie wyświetlany), lub przełączenie układów graficznych, tak aby wyświetlały zawartość innego obszaru pamięci trwa nieporównywalnie krócej niż samo rysowanie (przełączanie "stron" działa praktycznie natychmiastowo).

No więc robi się tak, że wyświetla się jeden obszar pamięci (obszar 1), a kolejną klatkę rysuje w drugim - niewidocznym (obszar 2), po zakończeniu rysowania, gdy w monitorze następuje powrót wiązki z dołu do góry, czyli podczas wygaszania pionowego (aczkolwiek nie jest to konieczne, ale zmniejsza migotanie do zera), podmienia się aktualnie wyświetlany obszar 1 na ten narysowany przed chwilą (2), więc teraz wyswietlany jest obszar 2, a rysowanie kolejnej klatki rozpoczyna się na niewidocznym teraz obrazie 1. po narysowaniu podnienia się znowu itd.
Potrójne buforowanie działa tak samo, ale mamy dwa niewidoczne obszary zamiast jednego.
widzoczny jest obszar 1, rysujemy w 3 (w drugim juz jest klatka, ktora miala nastapis po 1
- podmieniamy 1 z 2 i zaczynamy rysowac w 1
- podmieniamy 2 z 3 i rysujemy w 2

Działa to tak, że w efekcie wyświetlamy niejako dwie klatki do tyłu. Zaleta jest taka, że pozwala to na bardziej równomierne rozłożenie mocy procesora. wada - potrzeba 50% wiecej pamieci niż przy podwójnym buforowaniu
Źródło: http://www.elektroda.pl/rtvforum/topic395277.html

Uzupełniając te informacje powiem Ci, że utworzenie tego drugiego niewidocznego 'bufora' w pamięci karty graficznej nie jest (chyba) możliwe w Allegro, a zrobienie go 'ręcznie' w pamięci podręcznej niczego nie zmieni w renderingu. Efekt, który wyżej zacytowałem usuwa nieciekawy efekt odświeżania ekranu jeśli wyłączona jest synchronizacja ekranu, jednak tego czegoś co napisałeś to Ci potrójne buforowanie nie usunie.
P-8952
Dragonit
Temat założony przez niniejszego użytkownika
» 2009-08-01 21:09:48
Moze to wina słabego kompa?
CPU 2.89
512 RAM
no i najslabsza rzecz RADEON 9200SE 128RAM pamieci i niechybne 64bity.
MOze karta graficzna poprostu nie nadąża?
P-8953
pompom
» 2009-08-01 21:28:39
Na pewno nie jest to wina komputera.
(czy monitora, to nie wiem)
P-8955
Dragonit
Temat założony przez niniejszego użytkownika
» 2009-08-02 20:09:48
Tylko ze sprawdzilem na CRT'ku i jest to samo. Raczej, a napewno jest to złudzenie, bo gdy przypatrze sie głębiej to tego rozdwajania nie ma. lol, a może mi mózg nie nadąża:)
P-8961
« 1 » 2
  Strona 1 z 2 Następna strona