Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
Analizziamo nel dettaglio DJI RS 5, l'ultimo arrivato della famiglia Ronin progettato per videomaker solisti e piccoli studi. Tra tracciamento intelligente migliorato e ricarica ultra rapida, scopriamo come questo gimbal eleva la qualità delle produzioni.
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D è la nuova CPU gaming di riferimento grazie alla 3D V-Cache di seconda generazione e frequenze fino a 5,6 GHz. Nei test offre prestazioni superiori a 9800X3D e 7800X3D, confermando la leadership AMD nel gaming su PC.
Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-04-2008, 18:11   #1
Radeon89
Senior Member
 
L'Avatar di Radeon89
 
Iscritto dal: Mar 2006
Città: Provincia di Lecco
Messaggi: 321
[C#]Come valutare il n° di fotogrammi al secondo di una scena DirectX fatta da me?

Ciao a tutti!
Sto facendo la mia tesina di maturità, che invece di essere un gioco (come pensavo qui) è una specie di dimostrazione delle DirectX. Ora, ho già trovato un modo per visualizzare il numero di fotogrammi al secondo della mia scena. Ho messo un valore int come attributo della form in cui è presente la scena DirectX e lo vado ad incrementare ogni qual volta traccio qualcosa con il metodo Paint della form.

Inoltre ho fatto partire un thread che cicla all'infinito in questo modo per valutare quando è passato un secondo:

Codice:
private void tempoFps(Object start) //metodo per il thread che visualizza il numero di frame per secondo
        {
            DateTime timeStart = (DateTime)start; //leggo il tempo passato, che è l'ora attuale
            while (true) 
            {
                TimeSpan calcolo = DateTime.Now - timeStart;//faccio la differenza tra il tempo attuale e quello iniziale
                if ((calcolo.Seconds) >= 1) //se è passato almeno un secondo
                {
                    scelta.fps(fps); //chiamo il metodo della finestra di menu per visualizzare il valore del numero di fps
                    fps = 0; // è la variabile che tiene conto degli fps
                    timeStart = DateTime.Now; //riazzero il tempo iniziale
                }
            }
        }
Il metodo chiamato dell'oggetto scelta (che è un'altra form) stampa il numero di fotogrammi al secondo.

L'unico problema è che questo thread, essendo un ciclo infinito, occupa molto tempo cpu (ho un dual core quindi ne occupa la metà), e considerando che prima il mio programma non occupava praticamente nulla di CPU, vorrei ottimizzarlo un po'.

Ho provato ad aprire fraps e lui se la viaggia che è un piacere... Come faccio ad ottimizzare il tutto??
__________________
CONFIGURAZIONE PC FISSOAlimentatore:Levicom X-Alien 450W.CPU:Intel Core 2 Duo E6600 @2975MHz per ora...VGA:Sapphire x1950 xt 256 mb @634/945 MOBO:P5N-E SLI RAM:2Gb Corsair XMS2 6400 cas4||BENCHMARK PC FISSO 3dMark05:12810 3dMark06:6546||Internet:Fastweb 6mbit/s||PORTATILEAcer Aspire 5920G.CPU:Intel Core 2 Duo T5550.VGA:nVidia 8600M GT 512mb.RAM:3 gb.HDD:160gb
Radeon89 è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2008, 18:20   #2
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Hai diversi modi per farlo. Io ti consiglio di separare il rendering un thread, oppure metterlo in risposta all'evento Idle della Form.

All'inizio del render frame prendi il tempo corrente e lo sottrai al tempo preso al frame precedente. Cosi' calcoli il frame_time e da li' il frame rate. Meglio ancora prendere il tempo ogni X frame.

E' pulito e funziona.

Ora, se metti un ciclo (come il render loop) in un altro thread e non vuoi fargli mangiare tutta la CPU, sbatti un bel Sleep(1) o Sleep(0).

Nel primo caso rilasci la CPU per un millisecondo e il thread va in pausa, mentre nel secondo caso rilasci il resto del timeslice allocato per quel thread al sistema, il thread non va in pausa ma viene rimesso in coda pronto per un'altra allocazione al prossimo round robin. Ma puo' avere alcuni problemi in alcuni casi contorti.

Usa Sleep(1) e funziona una meraviglia.

Note stilistiche:
- scrivi variabili e metodi in inglese
- NON COMMENTARE IL CODICE RIGA PER RIGA O VENGO A CASA TUA E TI SPEZZO LE GINOCCHIA

No, non lo faccio, ma non commentare il codice riga per riga che gesu' bambino piange
fek è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2008, 19:03   #3
Radeon89
Senior Member
 
L'Avatar di Radeon89
 
Iscritto dal: Mar 2006
Città: Provincia di Lecco
Messaggi: 321
Errore LoaderLock

Ok, ho messo l'istruzione Thread.Sleep(1) ed ora l'utilizzo cpu è tornato normale

Avrei un'altra cosa da chiederti, una curiosità: hai nominato l'evento idle della form. Quando viene generato? Quando l'applicazione arriva alla fine del metodo Paint?

Vado un po' OT per chiederti un'altra cosa

[OT]
Quando da Visual studio faccio partire il programma, ogni tanto mi compare questo errore:

Tentativo di esecuzione gestita da parte della DLL 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX.DirectInput\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.DirectInput.dll' all'interno del blocco OS Loader. Non provare a eseguire codice gestito all'interno di una DllMain o di una funzione di inizializzazione delle immagini. Questa operazione può causare il blocco dell'applicazione.

In presenza di questa istruzione:
Codice:
inizializzaTastiera(handle);
che chiama il metodo per l'inizializzazione della tastiera:
Codice:
public void inizializzaTastiera(IntPtr handle)
        {
            keyb = new Microsoft.DirectX.DirectInput.Device(SystemGuid.Keyboard); //alloco la tastiera di default alla mia variabile "keyb"
            keyb.SetCooperativeLevel(handle, CooperativeLevelFlags.Background | CooperativeLevelFlags.NonExclusive);
            keyb.Acquire();
        }
Dove sta il problema??
Finora a fare partire l'eseguibile da Windows non è successo nulla di strano, ma magari è perché la maggior parte delle volte lo faccio da Visual Studio...
[/OT]
__________________
CONFIGURAZIONE PC FISSOAlimentatore:Levicom X-Alien 450W.CPU:Intel Core 2 Duo E6600 @2975MHz per ora...VGA:Sapphire x1950 xt 256 mb @634/945 MOBO:P5N-E SLI RAM:2Gb Corsair XMS2 6400 cas4||BENCHMARK PC FISSO 3dMark05:12810 3dMark06:6546||Internet:Fastweb 6mbit/s||PORTATILEAcer Aspire 5920G.CPU:Intel Core 2 Duo T5550.VGA:nVidia 8600M GT 512mb.RAM:3 gb.HDD:160gb

Ultima modifica di Radeon89 : 05-04-2008 alle 16:03.
Radeon89 è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2008, 19:57   #4
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da Radeon89 Guarda i messaggi
Avrei un'altra cosa da chiederti, una curiosità: hai nominato l'evento idle della form. Quando viene generato? Quando l'applicazione arriva alla fine del metodo Paint?
No, e' generato quando la Form non ha piu' messaggi da processare.


Quote:
Dove sta il problema??
Finora a fare partire l'eseguibile da Windows non è successo nulla di strano, ma magari è perché la maggior parte delle volte lo faccio da Visual Studio...
Non ho idea, mai usato, sorry.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2008, 19:59   #5
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
Quote:
Originariamente inviato da fek Guarda i messaggi
No, non lo faccio, ma non commentare il codice riga per riga che gesu' bambino piange

che stai diventando anche tu un evangelista fran?
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2008, 08:59   #6
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Ma è per una Giusta Causa (tm).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2008, 11:23   #7
Radeon89
Senior Member
 
L'Avatar di Radeon89
 
Iscritto dal: Mar 2006
Città: Provincia di Lecco
Messaggi: 321
Comunque quel problema è fastidiosissimo, me lo dà quasi sempre da quando ho fatto le ultime modifiche per il conteggio dei fotogrammi al secondo... E non capisco per quale motivo... Inoltre ha reso Visual Studio instabile, nel senso che spesso si blocca sul mio pc quando faccio partire il programma dall'IDE, e poi continua dice di essere in attesa di un evento che tarda ad essere generato...
__________________
CONFIGURAZIONE PC FISSOAlimentatore:Levicom X-Alien 450W.CPU:Intel Core 2 Duo E6600 @2975MHz per ora...VGA:Sapphire x1950 xt 256 mb @634/945 MOBO:P5N-E SLI RAM:2Gb Corsair XMS2 6400 cas4||BENCHMARK PC FISSO 3dMark05:12810 3dMark06:6546||Internet:Fastweb 6mbit/s||PORTATILEAcer Aspire 5920G.CPU:Intel Core 2 Duo T5550.VGA:nVidia 8600M GT 512mb.RAM:3 gb.HDD:160gb
Radeon89 è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2008, 20:14   #8
Rigo007
Member
 
L'Avatar di Rigo007
 
Iscritto dal: Oct 2001
Città: Trento
Messaggi: 164
Ciao,
vi vedo abbastanza efferati in materia quindi vi chiedo gentilmente una dritta.
Devo imparare a programmare in C# sfruttando le funzionalità e le classi del .NET Framework e volevo sapere quale versione di Visual Studio e quale versione di .NET Framework installare su un computer con SO WinXP.
Grazie.
Rigo007 è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2008, 22:58   #9
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
Quote:
Originariamente inviato da Rigo007 Guarda i messaggi
Ciao,
vi vedo abbastanza efferati in materia quindi vi chiedo gentilmente una dritta.
Devo imparare a programmare in C# sfruttando le funzionalità e le classi del .NET Framework e volevo sapere quale versione di Visual Studio e quale versione di .NET Framework installare su un computer con SO WinXP.
Grazie.
Visual C# Express 2008 che dovrebbe insallarti automaticamente il .Net Framework 3.5, con cui puoi sfruttare le nuove features tra cui Linq e le properties generate automaticamente e magari qualche altra cosa che ti può citare gugoxx perchè io per ora sto lavorando con .Net 2.0 per motivi di compatibilità maggiore e quindi non lo conosco in maniera approfondita il framework 3.5......
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 05-04-2008, 16:02   #10
Radeon89
Senior Member
 
L'Avatar di Radeon89
 
Iscritto dal: Mar 2006
Città: Provincia di Lecco
Messaggi: 321
Quote:
Originariamente inviato da Rigo007 Guarda i messaggi
Ciao,
vi vedo abbastanza efferati in materia quindi vi chiedo gentilmente una dritta.
Devo imparare a programmare in C# sfruttando le funzionalità e le classi del .NET Framework e volevo sapere quale versione di Visual Studio e quale versione di .NET Framework installare su un computer con SO WinXP.
Grazie.
Mah, io uso Visual Studio 2005, non perché sia il migliore ma la mia scuola ha degli accordi con Microsoft e lo distribuiscono gratuitamente (conoscete l'MSDNAA?). Anche se ora è in distribuzione la versione 2008, che dovrebbe essere migliore.

Comunque in merito al mio problema nessuno sa dirmi niente? Lo fa spesso... E' un errore di LoaderLock
__________________
CONFIGURAZIONE PC FISSOAlimentatore:Levicom X-Alien 450W.CPU:Intel Core 2 Duo E6600 @2975MHz per ora...VGA:Sapphire x1950 xt 256 mb @634/945 MOBO:P5N-E SLI RAM:2Gb Corsair XMS2 6400 cas4||BENCHMARK PC FISSO 3dMark05:12810 3dMark06:6546||Internet:Fastweb 6mbit/s||PORTATILEAcer Aspire 5920G.CPU:Intel Core 2 Duo T5550.VGA:nVidia 8600M GT 512mb.RAM:3 gb.HDD:160gb
Radeon89 è offline   Rispondi citando il messaggio o parte di esso
Old 05-04-2008, 16:46   #11
kernel::panic
Registered User
 
Iscritto dal: Feb 2008
Messaggi: 77
Quote:
Originariamente inviato da Radeon89 Guarda i messaggi
Comunque in merito al mio problema nessuno sa dirmi niente? Lo fa spesso... E' un errore di LoaderLock
Prova ad andare in "Proprietà progetto", poi nel tab "Debug" e a togliere la spunta a "Enable the Visual Studio hosting process"... a me aveva risolto un analogo problema lavorando con gli hook di sistema.

Ciao
kernel::panic è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2008, 17:55   #12
Radeon89
Senior Member
 
L'Avatar di Radeon89
 
Iscritto dal: Mar 2006
Città: Provincia di Lecco
Messaggi: 321
No, purtroppo lo fa ancora... Anzi, devo dire che è peggiorata la situazione togliendo il segno di spunta da quella casella. Almeno prima quando lo fa basta farlo ripartire, ora devo provare 3 volte di seguito per riuscire a farlo andare!

Altri suggerimenti???
__________________
CONFIGURAZIONE PC FISSOAlimentatore:Levicom X-Alien 450W.CPU:Intel Core 2 Duo E6600 @2975MHz per ora...VGA:Sapphire x1950 xt 256 mb @634/945 MOBO:P5N-E SLI RAM:2Gb Corsair XMS2 6400 cas4||BENCHMARK PC FISSO 3dMark05:12810 3dMark06:6546||Internet:Fastweb 6mbit/s||PORTATILEAcer Aspire 5920G.CPU:Intel Core 2 Duo T5550.VGA:nVidia 8600M GT 512mb.RAM:3 gb.HDD:160gb
Radeon89 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
Tesla, è ufficiale: i Robotaxi fa...
DeepL sempre più evoluto: arriva ...
Un vecchio assegno venduto a 4.800 volte...
Portatili Dell 16 in offerta su Amazon: ...
Amazfit punta ancora più in alto:...
Deep tech e venture capital: ScaleUp Lab...
GWM ha creato un font specifico per i di...
Oro rosa e charm Les Néréi...
La XPeng P7+ è salpata in direzio...
Quali sono i componenti più affid...
Amazon Haul raddoppia lo sconto: -30% su...
Germania e Danimarca accelerano sull'eol...
Azienda cinese che chiede aiuto ad una a...
Per aumentare la competitività ne...
I nuovi MacBook con M5 Pro e Max usciran...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:44.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v