Newsgroup: it.comp.programmare.win32
Titolo: DirectX per migilorare prestazioni 2D

Ciao a tutti,
Sviluppo in Visual C++ e per il display di buffer 2d a video ho sempre
usato la DrawDibDraw. Ora vorrei passare a DirectX o OpenGL per
migliorare le prestazioni della visualizzazione a video, è una cosa
sensata o l'accelerazione hardware(della scheda video) ha senso solo
sul 3d?
Grazie per un eventuale risposta
saluti

No, anzi...
DirectX ti mette un namespace completo a disposizione ( DirectX.Draw )
sviluppato appositamente per 2D.
--
Carmine ( 
pikachu...@gmail.com
 (Togli la scritta NOSPAM) )
Webmaster di The Total Site (
http://www.tekkentag.altervista.org/
 )
Co-Webmaster di SceptilePage (
http://www.sceptilepage.altervista.org/
 )
Account Messenger: 
thetot...@msn.com

Ciao, grazie per la risposta
Ho fatto alcune prove usando DirectX 3d simulando il 2d con texture e
surface
Ho poi usato D3DXLoadSurfaceFromMemory per caricare il mio buffer,
però, a parte la complicazione di usare un ambiente 3d per fare
grafica 2d, mi sembra lento sui trasferimenti.
Ho sentito di DirectShow, qualcuno lo ha usato? Può essere utile per
fare display di immagini 2d acquisite da telecamera?
grazie
ciao

Allora... vedi... per prima cosa, puoi usare IrrLicht (gestisce molto bene
la grafica in 2d) oppure, come ti ho detto DirectDraw , poi, in che
linguaggio li programmi? ... giusto per sapere...
Infine, NON puoi assolutamente utilizzare directx per le immagini ! sono
filmati....... devi prima acquisire le immagini, poi basta che crei un
poligono rettangolare e applichi come texture le immagini... attento alle
dimesioni del poligono ;-).
Non conosco DirectShow... quindi non posso dirti :-(.
--
Carmine ( 
pikachu...@gmail.com
 (Togli la scritta NOSPAM) )
Webmaster di The Total Site (
http://www.tekkentag.altervista.org/
 )
Webmaster di SceptilePage (
http://www.sceptilepage.altervista.org/
 )
Account Messenger: 
thetot...@msn.com
MyBLOG (NEW!!) 
http://spaces.msn.com/members/itanet/

Ops !!!
Mi ero dimenticato il tuo primo post !!! sviluppi in c++... scusa.
Comunque se puoi dirci cosa devi fare(e magari mettere un listato di codice)
posso dirti qual è la soluzione migliore.
Ciao,
--
Carmine ( 
pikachu...@gmail.com
 (Togli la scritta NOSPAM) )
Webmaster di The Total Site (
http://www.tekkentag.altervista.org/
 )
Webmaster di SceptilePage (
http://www.sceptilepage.altervista.org/
 )
Account Messenger: 
thetot...@msn.com
MyBLOG (NEW!!) 
http://spaces.msn.com/members/itanet/

Ciao Carmine, grazie per le risposte, spiego meglio cosa devo fare.
Quello che mi interessa è fare display a video di un immagine
acquisita da telecamera,
quindi visualizzare un buffer in memoria in formato RGB o YUV.
La mia idea era usare DirectX (non pensavo DirectDraw per il fatto che
dalla DirectX 8 in poi sono state dichiarate obsolete) per sfruttare la
scheda video accelerata e non caricare così la CPU per fare display.
Cercando un po' in internet ho trovato esempi di DirectX e li ho
adattati alle mie esigenze però ho dovuto complicarmi un po' la vita
con strutture 3d, cmq quello che ho notato è che i tempi sono
piuttosto alti, forse sbaglio qualcosa?
Dopo aver creato il device creo la texture e la surface(fatta perchè
non mi sembra che si possa aggiorare la texture caricandola con un
buffer)
3DXCreateTexture(d3dDevice, 768, 288, 1, 0,
		D3DFMT_R8G8B8, D3DPOOL_MANAGED,  &d3dTexture))
d3dTexture->GetSurfaceLevel(0, &pSurface);
//carico il mio buffer
hr = D3DXLoadSurfaceFromMemory(pSurface, NULL, NULL, pBuffer,
D3DFMT_R8G8B8, 768 * 3, NULL, &SrcRect, D3DX_FILTER_NONE, 0); // e solo
questa ci mette circa 15 ms
poi quando faccio dopo la Present impiega 2 ms.
Cosa sbaglio?
Grazie Ciao

> Cosa sbaglio?
A una prima occhiata il fatto che il buffer si carica troppo... poichè un
filmato DV da videocamera è abbastanza "grosso" in fatto di MegaByte...
Potresti anche comprimere prima il filamto, ma se è molto lungo potrebbe
richiedere tempo... se invece non vuoi affaticare il processore puoi lasciar
perdere le DirectX (sono per creare oggetti 3D) e utilizzare gli SDKs
forniti dalle case produttrici delle schede video.


Grazie Ciao
prova con le funzioni capXXXX() per qualcosa di (abbastanza) semplice.
Se vuoi piů potenza
http://www.codeproject.com/directx/LiveVideo.asp