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? |
|
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 |
|
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. |
|
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... |
|
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.htmlUzupeł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. |
|
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? |
|
pompom |
» 2009-08-01 21:28:39 Na pewno nie jest to wina komputera. (czy monitora, to nie wiem) |
|
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:) |
|
« 1 » 2 |