Allegro - nie radzi sobi z wyświetlaniem "w czasie rzeczywistym"

0

Witam,
robie coś w rodzaju symulacji kolorofonu.
W allegro chce wyświetlać po prostu trzy kółka, które będą się "swiecić" w jasności od 0 do 255 dla kolorów R,G,B kolejno dla diód.
Używam podwójnego buforowania, a w skrócie wyświetlanie wygląda tak:

	clear_to_color( buffer, makecol( 150, 150, 150 ) );
	circlefill( buffer, posX1, posY, radius, makecol( (int)r, 0, 0 ) );
	circlefill( buffer, posX2, posY, radius, makecol( 0, (int)g, 0 ) );
	circlefill( buffer, posX3, posY, radius, makecol( 0, 0, (int)b ) );
	blit( buffer, screen, 0, 0, 0, 0, w, h ); 

Ten kod jest zamkniety tak naprawdę w pętli i de facto wywoływany 44 100 razy w ciągu sekundy (tak próbkuje dźwięk). Problem jest w tym że allegro nie nadąża i sobie gdzies buforuje - mi natomiast zalezy aby to robić w pseudo czasie rzeczywistym - tzn ze jak bedzie obsów liczony w dziesiatkach milisecund to spoko, ale nie zeby mi buforował coraz wiecej

0

Wywal podwójne buforowanie. Przecież nie masz ruchu na ekranie. Nadpisujesz obszar w całości. Bez podwójnego buforowania może da rady uzyskać 200-400 razy na sekundę ale nie więcej. Jednak więcej niż 100 zmian na sekundę jest absolutnie bezsensowne ponieważ synchronizacja monitora będzie mniejsza. A nawet gdyby była większa to twoje oko i tak tego nie wyłapie.

0

niby racja bo odświerzanie i tak jest co < 100 hz - a mam takie fizjologiczne pytanie? Ucho ludzie jest bardziej czułe niż oko? Skoro dla audio jakości CD próbkujemy czestotliwsocia 44 100 Hz, tymaczasem monitor jest odswierzany co ok 100 hz?

0

odświeżanie :) dobry patent - może się poprawne polszczyzny naucze :)

0

Zrobiłem mały test:
i jeśli tak czesto zmieniam jak pisałem to mimo tego że allegro nie nadąza to mam ładne przejście - tzn ładnie zmieniają mi się kolory
jesli natomiast wyswietlam tak jak tutaj kolega proponował niestety

  1. mam efekt "mrugania"
  2. wizualny efekt jest taki jakby kołko w jednm czasie było w różnych odcieniach koloru
0

Światło widzialne ma wielokrotnie większe częstotliwości niż dźwięk. Jeżeli chodzi więc o zakres odbieranych częstotliwości to są to ogromne różnice - ucho kHz, oko - THz. Natomiast tutaj chodzi o inną "czułość" - możliwość rozróżnienia dwóch obrazów/dźwięków które pojawiają się pomiędzy sobą w krótkich odstępach czasu. Który narząd sobie z tym lepiej radzi tego nie wiem.

To dlaczego próbkujemy dźwięk z taką częstotliwością wynika z twierdzenia p próbkowaniu.

0

A wiesz jaką częstotliwość ma pasmo widzialne? http://pl.wikipedia.org/wiki/%C5%9Awiat%C5%82o

0

tak, widze mój błąd w rozumowaniu
W takkim razie mam dwa pytania:

  1. jak radzicie sobie poradzic z ta sytuacja: wyswietlac po prostu co x próbek jakas wartosc srednio tak zeby efekt pokazywac z czestotliowscia ok 100 Hz?
  2. dlaszego jesli juz nie mam opozniej bo ok 100 razy w ciegu sec zmieniam to mam takie dziwne efekty jak pisalem
0

Efekt mrugania bo robisz to więcej niż 100 razy na sekundę.

0

dobra licze jakos sobie ta srednia sensowonym sposobem i wyswietlam w czestoscia ok 100 hz - mam tylko jeszcze jeden wspomniany wczesniej mankament:
wizualnie jakby te kółka były w różnych odcieniach na raz - innymi slowy nieruwno mrugają - jedna czesc kola np ma wartosc R 100 a inna w tym samym czasie 130
wczesniej jak chcialem to robic z czestoscia 44 100 hz az to mi wprawdzie nie nadazalo ale tego brzydkiego efektu nie bylo
co ciekawe:
chcicałem zrobić screena zeby pokazac o o co mi chodzi - ale tego efektu nie da sie uchwycic na stop klatce - wynika z tego ze w danej chwili wszystko jest wyswietlane dobrze - tylko efekt wizualny jest nie taki - dlaczego? zrozumialbym jakby byla jakas nieplynnosc w zmianie koloru na calym kolku - moze wtedy bym pomyslal ze jednak z za mala czestoscia do flushuje - ale czesc kola ?

0

Jak chcesz aby kolor pojawiał się jednocześnie to musisz obniżyć częstotliwość odświeżania do 50 hz oraz zwrócić podwójne buforowanie.

0

szczerze mowiac czy mam wlaczone podwojne buforowanie czy nie to nie widze w sumie roznicy dla mojego przypadku
przy 50 hz nie wyglada to jednak dobrze - przy 30 hz juz wzglednie choc nie idealnie - w sumie moge zaakceptowac takie cos ale sie tak zastanawiam dlaczego jest taki efekt przy tak małych czestotliwosiach

0

Bo allegro nie jest przeznaczone do szybkich animacji.

0

dobra, ale dla tego cho chcialem uzyskac ujdzie
wielkie dzieki za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1