Come posso creare una funzione per elaborare ogni millisecondo? - pagina 3

 
Dmitry Fedoseev:

24 fotogrammi al secondo sono sufficienti se non hai letto i libri sulla TV quando eri un bambino)))

In realtà i televisori CRT analogici usavano la scansione interlacciata, ma solo perché a quel tempo non potevano fare fotogrammi completi in una data larghezza di banda, mettevano fuori prima le linee dispari e pari e lo sfarfallio non era visibile a causa del postluminescenza del tubo. Non solo ho letto libri, ma come studente ho anche fatto un bel po' di lavori scadenti riparando televisori ))

 
Alexey Volchanskiy:

In realtà i televisori CRT analogici avevano la scansione interlacciata, ma solo perché in quegli anni non potevano fare fotogrammi completi in una data larghezza di banda, facevano prima le linee pari, poi quelle dispari, e a causa del bagliore del tubo lo sfarfallio non era visibile. Non solo ho letto libri, ma come studente ho anche fatto un bel po' di lavori scadenti riparando televisori ))

Non so quanti fotogrammi ci dovrebbero essere. Non ho letto nessun libro del genere. Ma la cosa principale è che ora l'ho fatto e funziona bene. Certo, non ho ancora capito tutto, ma ho già qualcosa a cui aggrapparmi.
 
Nikolay Demko:

La funzione ChartRedraw ha un costo di 40 millisecondi, quindi non ha senso aggiornare il timer dopo 16.

40 millisecondi corrispondono a 25 fotogrammi al secondo, che è uguale alla velocità di percezione umana.

Beh no, Nikolai, certo che è meno di questo. Sul mio computer è un po' meno di 2 millisecondi con COLOR_FORMAT_ARGB_NORMALIZE, e meno di un millisecondo con COLOR_FORMAT_XRGB_NOALPHA

Come potete vedere dallo script d'esempio allegato(TestSpeedCanv.ex5) il ritardo di 30 millisecondi (32 fps) è assolutamente sufficiente per i vostri occhi. A proposito, tutti i video sono girati a questa velocità. Un frame rate più alto viene utilizzato quando è richiesta la riproduzione al rallentatore.

File:
 
Реter Konow:

La frequenza massima della funzione timer è di 15-16 mc.

Sì, è così. (Solo non la frequenza, ma il periodo. Frequenza massima = 64 Hz)

Solo per aggiungere un chiarimento:

Il passo di periodo per il timer = 15,625 millisecondi.

Cioè con il comando EventSetMillisecondTimer(1) e con il comando EventSetMillisecondTimer(10) il periodo reale sarà 15,625 ms.

con il comando EventSetMillisecondTimer(21) e con il comando EventSetMillisecondTimer(30) il periodo effettivo sarà di 31,25 ms.

Con il comando EventSetMillisecondTimer(95) e il comando EventSetMillisecondTimer(105), il periodo effettivo sarà 109,375 ms.

ecc.

File:
 
Alexey Volchanskiy:

In realtà i televisori CRT analogici avevano la scansione interlacciata, ma solo perché in quegli anni non potevano fare fotogrammi completi in una data larghezza di banda, facevano prima le linee pari, poi quelle dispari, e a causa del bagliore del tubo lo sfarfallio non era visibile. Non solo ho letto libri, ma come studente ho anche fatto un bel po' di lavori scadenti riparando televisori ))

Sì, 625 linee e tutto il resto. I primi giochi fatti in casa (non giochi per computer - assemblati su singoli chip) usavano di solito 312 linee. Ho giocato da bambino: hockey, tennis...
 
Alexey Volchanskiy:

In realtà i televisori CRT analogici avevano la scansione interlacciata, ma solo perché in quegli anni non potevano fare fotogrammi completi in una data larghezza di banda, facevano prima le linee pari, poi quelle dispari, e a causa del bagliore del tubo lo sfarfallio non era visibile. Non solo leggo libri, ma da studente facevo dei bei turni per riparare i televisori).

Quindi? Non vi hanno insegnato che nel video, 24 fotogrammi al secondo sono sufficienti per un effetto naturale di movimento uniforme? E il problema dello sfarfallio è un problema di monitor (TV).

 
Dmitry Fedoseev:

Quindi? Non vi hanno insegnato che nel video, 24 fotogrammi al secondo sono sufficienti per fornire un effetto naturale di movimento uniforme? E il problema dello sfarfallio è un problema di monitor (TV).

ora anche i telefoni hanno video a 50 fps)

sparare la stessa cosa, movimento veloce, a 24 fps e 50 fps e confrontare

ps. e charlie chaplin ha sparato 15 fps che è più che sufficiente)

 
Alexey Volchanskiy:

In realtà i televisori CRT analogici avevano la scansione interlacciata, ma solo perché in quegli anni non potevano fare fotogrammi completi in una data larghezza di banda, facevano prima le linee pari, poi quelle dispari, e a causa del bagliore del tubo lo sfarfallio non era visibile. Non solo ho letto libri, ma come studente ho anche fatto un bel po' di lavori scadenti riparando televisori ))

Sì, ma quei mezzi telai erano diversi, non dello stesso telaio.
E per questo i movimenti erano più fluidi rispetto ai 25 fps del computer.

 
Taras Slobodyanik:

anche i telefoni ora hanno video a 50 fps)

sparare la stessa cosa, movimento veloce, a 24 fps e 50 fps e confrontare.

ps. e charlie chaplin ha sparato 15 fps - più che sufficiente)

È incredibile la profondità della conoscenza! ...e la sottigliezza della percezione! Di solito tutti vedono scatti e movimenti innaturali nei film di Charlie Chaplin.

 
Nikolai Semko:

Sì, è così. (Solo non la frequenza, ma il periodo. Frequenza massima = 64 Hz)

Solo per aggiungere un chiarimento:

Il passo di periodo per il timer = 15,625 millisecondi.

Cioè con il comando EventSetMillisecondTimer(1) e con il comando EventSetMillisecondTimer(10) il periodo reale sarà 15,625 ms.

con il comando EventSetMillisecondTimer(21) e con il comando EventSetMillisecondTimer(30) il periodo effettivo sarà di 31,25 ms.

Con il comando EventSetMillisecondTimer(95) e il comando EventSetMillisecondTimer(105), il periodo effettivo sarà 109,375 ms.

ecc.

Grazie per la correzione, Nikolai.

Non ho misurato questi periodi esatti, ma ho notato che ci sono dei salti di alcuni periodi. La frequenza non è ideale. Soprattutto nella gamma di piccoli valori di periodo (16-25 ms). Quindi, se lo imposto a 16 ms, la pausa sarà molto spesso di 32 millisecondi.

C'è una sorta di fallimento nella frequenza dei periodi. È una specie di aritmia elettronica.


Quindi, sto pensando, cosa succede se imposto un periodo di 40 ms (che è sufficiente per la percezione umana) e il timer salta alcuni periodi? Allora non avremmo 24 fotogrammi al secondo, ma 18-24. A seconda di quanti periodi il timer salterà. Penso che l'opzione migliore sarebbe un periodo di timer di 25ms. Che è quello che mi ero prefissato all'inizio.

Motivazione: