Re: meglio C# oppure C++ ?
|
- Subject: Re: meglio C# oppure C++ ?
- From: GiO
- Data: Tue, 30 Sep 2008 14:59:41 +0200
- Newsgroups: it.comp.giochi.sviluppo
Salve Marco,
Il 29/09/2008 11.36 ha scritto:
>> Comunque le librerie di .net non sono per niente performanti la
>> chiamate Graphics.DrawImage sono molto lente (per motivi che non hanno
>> a che fare con il numero di pixel e che, onestamente, non riesco a
>> capire)
> Potrei azzardare un'ipotesi: ogni refresh video, anche a risoluzioni
> differenti, ha la stessa velocità perché viene eseguito in hardware
> dalla scheda video, quindi blittare una risoluzione piuttosto che
> un'altra può essere indifferente. Il rallentamento di .NET invece credo
> sia dovuto all'uso del framework, quindi più che le operazioni grafiche
> risulta rallentato tutto il resto della computazione.
Purtroppo non è come dici tu, altrimenti chiaramente avrei evitato di
esprimermi in quel modo.
Il problema è che, a parità di "computazioni" e di risultato visivo, se
fai più chiamate a Graphics.DrawImage hai un overhead ingiustificato. E
non dipende dal tipo di immagine o di misure.
Ho uno schermo (o finestra) 1024x768, disegno uno sfondo e poi disegno
30 "sprite" (con alpha) su di esso. Faccio questo ad ogni fotogramma,
senza praticamente altri calcoli e va a 30 fps.
Se i 30 sprite sono tutti su una sola immagine molto grande, il tutto va
a 100 fps.
Attenzione: sto parlando di 30 chiamate, non di 1000.
Non ci sono "altre computazioni", è solo un test che ho fatto dopo aver
letto che la gente (nei vari forum e newsgroup) si lamenta.
Ogni chiamata a Graphics.DrawImage, per qualche motivo strano, sembra
prendersi un tot di tempo fisso indipendente dal numero di pixel da
visualizzare.
Tra l'altro c'è da dire che il blitting in sé è accelerato tant'è che,
se usi poche chiamate, ottieni dei risultati graficamente ottimi anche
con rotazioni e scaling.
--
C++U,
GiO