PDA

View Full Version : Fps


fuku san
04-06-2004, 21:11
Com'è possibile che un videogame giri a 100 frames al secondo su un monitor a 75 hz ?????? Il monitor se è a 75hz in teoria non dovrebbe limitare a visualizzare "solo" 75 frames al secondo?

sdfsdfsdfsddsfsdf
04-06-2004, 21:23
Originariamente inviato da fuku san
Com'è possibile che un videogame giri a 100 frames al secondo su un monitor a 75 hz ?????? Il monitor se è a 75hz in teoria non dovrebbe limitare a visualizzare "solo" 75 frames al secondo?
non vorrei dire una cavolata ma i frame per secondo (fps) e la frequenza di aggiornamento del monitor (hertz) sono due parametri ben distinti... ;)

Wombat
04-06-2004, 21:23
Se la sincronizzazione verticale e' attivata puo' fare
solo 75 frame's al secondo se non e' attivata
ne fa' quanti riesce a farne fare la scheda.

sdfsdfsdfsddsfsdf
04-06-2004, 21:26
Originariamente inviato da Wombat
Se la sincronizzazione verticale e' attivata puo' fare
solo 75 frame's al secondo se non e' attivata
ne fa' quanti riesce a farne fare la scheda.
ah... ecco... ;)

BonOVoxX81
04-06-2004, 21:37
Originariamente inviato da Wombat
Se la sincronizzazione verticale e' attivata puo' fare
solo 75 frame's al secondo se non e' attivata
ne fa' quanti riesce a farne fare la scheda.


E non si fonde il monitor?Non e' un blocco fisico? :confused: :)

Wombat
05-06-2004, 11:46
MMMhh! In effetti si', e' un blocco che il monitor
impone alla scheda, pero' un elevato numero di
frame's non fa' fondere il monitor :D ,
se no gia' chi aveva una voodoo3 e giocava ad
Unreal lo aveva gia' fuso:D

fuku san
05-06-2004, 13:14
ok allora in teoria la scheda video disabilita il vertical retrace del monitor prima che parta la grafica del gioco
Una domanda un po + tecnica:come fa la scheda video a sincronizzare i frame al secondo? Legge il timer di sistema? Mi sembra strano perchè è usato dal sistema operativo non credo che lo possano usare altri processi

fuku san
05-06-2004, 13:27
mi spiego meglio:se viene letto il timer di sistema è il gioco che lo legge via software,non la scheda video in hardware,quindi il problema è che il gioco non può leggerlo perchè il timer viene usato dal sistema operativo...

oppure forse la scheda video ha un chip timer che il gioco setta via software?

sgksgk
05-06-2004, 13:49
Originariamente inviato da fuku san
mi spiego meglio:se viene letto il timer di sistema è il gioco che lo legge via software,non la scheda video in hardware,quindi il problema è che il gioco non può leggerlo perchè il timer viene usato dal sistema operativo...

oppure forse la scheda video ha un chip timer che il gioco setta via software?

Esistino dei timer che danno il tempo ai pennelli elettronici orizzonatali e verticali.
Basta sync con quest'ultimi prima di "disegnare" un pixel.
Si possono accedere via basso livello mediante degli indirizzi particolari (in Assembler non è poi così difficile).
Cmq se il monitor ha un refresh a 75Hz sync o no sync non vedrai mai + di 75 frame al secondo.
O meglio se togli il sync ne vedi di + si ma non completi cioè i quadri al secondo rimangono sempre 75......

Rinha
05-06-2004, 13:52
Originariamente inviato da sgksgk
Cmq se il monitor ha un refresh a 75Hz sync o no sync non vedrai mai + di 75 frame al secondo.
O meglio se togli il sync ne vedi di + si ma non completi cioè i quadri al secondo rimangono sempre 75......

Nonostante la mia scarsa esperienza tecnica mi sembrerebbe molto difficile smentire questa affermazione...

fuku san
05-06-2004, 14:28
Originariamente inviato da sgksgk
Esistino dei timer che danno il tempo ai pennelli elettronici orizzonatali e verticali.
Basta sync con quest'ultimi prima di "disegnare" un pixel.
Si possono accedere via basso livello mediante degli indirizzi particolari (in Assembler non è poi così difficile).



Ma questi timer che dici sono interni alla scheda video?

sgksgk
05-06-2004, 20:11
Originariamente inviato da fuku san
Ma questi timer che dici sono interni alla scheda video?

Pilotando il pennello elettronico del monitor (almeno nel classico CRT) i circuiti che danno il sync per la deflessione orizzontale e verticale dovrebbero trovarsi all'interno del monitor stesso......,ma qui aspetto qualke conoscitore approfondito di HW,visto che non mi sono informato e quindi,sapendo un po' come funziona il crt,sono adato ad opinione personale non certezza.....

sdfsdfsdfsddsfsdf
05-06-2004, 20:14
EDIT... sbagliato thread... :D

fuku san
06-06-2004, 03:09
Mmm ci sono molti fatti oscuri...allora,io intanto so che un gioco di solito non scrive mai nella memoria video mentre il raster del monitor è impegnato a disegnare i pixel sullo schermo perchè altrimenti lo schermo sfarfallerebbe,così ho letto,e quindi si aspetta sempre che il raster abbia finito di disegnare la schermata e che si trovi quindi nell'angolo in basso a destra del monitor.
A questo punto,in una porta d'I/O e precisamente la porta 0x3DA,viene settato un bit per informare che il raster ha finito il frame corrente e sta tornando nell'angolo in alto a sinistra per iniziare a disegnarne uno nuovo,questa azione del tubo catodico si chiama "vertical retrace".
In questo lasso di tempo il gioco scrive il nuovo frame da disegnare nella memoria video.
Bè,tutto questo se il gioco è sincronizzato con i frames/sec del monitor,oppure se ne deve disegnare 50 al secondo o 60 e il monitor ne disegna 75,allora salta qualche vertical retrace o robe del genere.
Se invece il gioco non è sincronizzato e va quindi alla max velocità che può,la cosa penso sia + complicata,io penso faccia così:
non controlla il vertical retrace ma un altra azione del raster:il ritracciamento orizzontale,che accade dopo ogni riga dello schermo che viene disegnata.
Dopo che una riga viene disegnata (da sinistra a destra orizzontalmente),il raster setta un bit nella porta 0x3DA per dire che ha finito una riga e sta tornando a sinistra (e una riga sotto)senza disegnare niente,ma solo per cominciare la riga successiva.
In questo lasso di tempo il gioco può scrivere sulla memoria video,non so se riesce a scrivere addirittura uno schermo intero o una riga o poche righe non ne ho la più pallida idea,ma in teoria lo schermo non dovrebbe sfarfallare perchè il raster e la scheda video non sono impegnati in questo frangente.
Poi quello che viene scritto sulla memoria video in questo caso non so se sovrascrive "la parte vecchia del frame",cioè quella già disegnata,o viene scritto sulla parte non ancora disegnata.
E poi comunque i frames sono sempre 75 al secondo quindi al massimo il gioco dice di essere a 100 e in effetti ne scrive 100 in VRAM ma in verità la scheda video ne disegna solo 75 perchè è sincronizzata in hardware col monitor.
Quindi molti frames vengono saltati, o no?
Non sono sicuro che sia come sopra vorrei conferme sono curioso

sgksgk
06-06-2004, 11:29
Originariamente inviato da fuku san
Mmm ci sono molti fatti oscuri...allora,io intanto so che un gioco di solito non scrive mai nella memoria video mentre il raster del monitor è impegnato a disegnare i pixel sullo schermo perchè altrimenti lo schermo sfarfallerebbe,così ho letto,e quindi si aspetta sempre che il raster abbia finito di disegnare la schermata e che si trovi quindi nell'angolo in basso a destra del monitor.
A questo punto,in una porta d'I/O e precisamente la porta 0x3DA,viene settato un bit per informare che il raster ha finito il frame corrente e sta tornando nell'angolo in alto a sinistra per iniziare a disegnarne uno nuovo,questa azione del tubo catodico si chiama "vertical retrace".
In questo lasso di tempo il gioco scrive il nuovo frame da disegnare nella memoria video.
Bè,tutto questo se il gioco è sincronizzato con i frames/sec del monitor,oppure se ne deve disegnare 50 al secondo o 60 e il monitor ne disegna 75,allora salta qualche vertical retrace o robe del genere.
Se invece il gioco non è sincronizzato e va quindi alla max velocità che può,la cosa penso sia + complicata,io penso faccia così:
non controlla il vertical retrace ma un altra azione del raster:il ritracciamento orizzontale,che accade dopo ogni riga dello schermo che viene disegnata.
Dopo che una riga viene disegnata (da sinistra a destra orizzontalmente),il raster setta un bit nella porta 0x3DA per dire che ha finito una riga e sta tornando a sinistra (e una riga sotto)senza disegnare niente,ma solo per cominciare la riga successiva.
In questo lasso di tempo il gioco può scrivere sulla memoria video,non so se riesce a scrivere addirittura uno schermo intero o una riga o poche righe non ne ho la più pallida idea,ma in teoria lo schermo non dovrebbe sfarfallare perchè il raster e la scheda video non sono impegnati in questo frangente.
Poi quello che viene scritto sulla memoria video in questo caso non so se sovrascrive "la parte vecchia del frame",cioè quella già disegnata,o viene scritto sulla parte non ancora disegnata.
E poi comunque i frames sono sempre 75 al secondo quindi al massimo il gioco dice di essere a 100 e in effetti ne scrive 100 in VRAM ma in verità la scheda video ne disegna solo 75 perchè è sincronizzata in hardware col monitor.
Quindi molti frames vengono saltati, o no?
Non sono sicuro che sia come sopra vorrei conferme sono curioso

A parte qualke dettaglio,tipo ottimizzazioni di achitettura (dipendono anche dalla scheda video) e se il monitor è crt,beh penso che sia proprio giutso.
Posso confermarti al 100% la prima parte (quando è sync).
Sull' ultima affermazione di quoto ma non parlo per certezze come ho già detto:

"E poi comunque i frames sono sempre 75 al secondo quindi al massimo il gioco dice di essere a 100 e in effetti ne scrive 100 in VRAM ma in verità la scheda video ne disegna solo 75 perchè è sincronizzata in hardware col monitor.
Quindi molti frames vengono saltati, o no?"

Io penso proprio di si.

Ciao ciao

P.s.:Purtroppo è da tanto ormai che non programmo + in assembler il video...(bei tempi......effetti grafici in assembler......)
:cry: :cry: :cry: