Accelerare hardware pt grafica

Intrebari legate de programarea cu biblioteci precum MFC, ATL, WTL si GDI+.
Post Reply
soso
Junior
Junior
Posts: 36
Joined: 27 Jul 2007, 17:20

Accelerare hardware pt grafica

Post by soso » 11 Feb 2009, 00:30

Ma intereseaza daca libraria GDI+ foloseste accelerarea hardware disponibila pe placa video sau nu, si cum se poate scrie un inlocuitor de GDI+ (pentru uzul unei aplicatii de grafica, nu sa inlocuiasca de tot GDI+ in Windows) care sa foloseasca accelerarea hardware disponibila.

Soso




soso
Junior
Junior
Posts: 36
Joined: 27 Jul 2007, 17:20

Re: Accelerare hardware pt grafica

Post by soso » 18 Feb 2009, 11:02

Mersi pt raspuns. Revin cu cealalta intrebare, cum as putea sa scriu un motor grafic (similar GDI+) care sa exploateze accelerarea hardware, daca exista. Aici ma refer la urmatorul scenariu: am algoritmul Bresenham pt desenarea de linii, simplu de implementat in soft. Cum fac acest algoritm sa fie accelerat hardware, daca placa video are suport pt asa ceva?
Acest motor grafic trebuie sa deseneze pe un bitmap in memorie, nu deseneaza direct pe ecran.

neagu_laurentiu
Membru++
Membru++
Posts: 919
Joined: 23 Jul 2007, 11:32

Re: Accelerare hardware pt grafica

Post by neagu_laurentiu » 18 Feb 2009, 11:14

Nu stiu care e utilitatea dar ai DirectX pentru accelerare. La un alt nivel poti folosi WPF sau chiar GDI(+).

soso
Junior
Junior
Posts: 36
Joined: 27 Jul 2007, 17:20

Re: Accelerare hardware pt grafica

Post by soso » 18 Feb 2009, 12:19

Am cautat sa vad cum se poate folosi DirectX pt grafica 2D dar din ce am citit, interfetele DirectDraw sunt obsolete. Nu am experienta cu DirectX, poate n-am sapat in directia buna. WPF ma ajuta partial, sunt constrans sa suport .NET 2.0, userii care au .NET 3.5 pot folosi varianta WPF a aplicatiei. Momentan folosesc GDI+, merge in 90% din cazuri dar ma lovesc de probleme la care momentan nu le gasesc solutia. GDI+ nu stie urmatoarele: moduri avansate de compozitie a culorilor (blend modes) cum ar fi darken, lighten, multiply, screen, etc; masca alpha channel pentru primitivele grafice - am o masca de transparenta activa si vizibilitatea primitivele grafice desenate ulterior este afectata de aceasta masca; grupuri de transparenta - un grup de primitive grafice se combina conform unui blend mode apoi rezultatul se combina cu desenul existent; control slab asupra afisarii textului - a trebuit sa dezvoltam propriul rasterizer pentru fonturi TrueType si Adobe Type 1; etc.
De toate astea am nevoie pentru ca firma unde lucrez dezvoltam un viewer (control, nu aplicatie) pt fisiere PDF.

User avatar
Andreas
Membru
Membru
Posts: 117
Joined: 09 Nov 2008, 12:13
Judet: Timiş
Location: Timisoara

Re: Accelerare hardware pt grafica

Post by Andreas » 18 Feb 2009, 13:58

DirectDraw a existat ca interfata pana la DirectX 7, din cate stiu, dupa care API-ul de grafica din DirectX a fost organizat sub denumirea de DirectX Graphics.
Daca vrei grafica avansata, sigur ca merita sa sapi in directia asta, pentru ca iti ofera tot ce ai enumerat tu ca necesitati (moduri nenumarate de color blending, folosirea motorului de iluminare pentru anumite efecte, moduri de culoare ARGB A-alpha channel, transaprency-intra la aplicare de "texture stages"=cum spui tu, grupuri in cascada de color blending s.a.m.d), permitand randare in suprafete (target frames) altele decat cea primary, care va fi afisata pe ecran. Documentatie: DirectX Graphics

O alternativa ar fi XNA, care este un frame work CLR(managed) pentru DirectX, care te poate ajuta, dupa putina acomodare, sa fii productiv.
Documentatie:XNA Game Studio.

Si mai ceva: un motor grafic, nu se refera la reinventari, gen implementare algoritmi de desenare a primitivelor grafice(acestia sunt deja in GPU sau emulati software in driver-ul DirectX), ci la module care sa iti rezolve rapid o problema, daca se poate cat mai general: de exemplu sa desenezi(randezi) dinamic un nor volumetric(cu tot cu incarcare de resurse) intr-un anumit spatiu/timp dintr-o scena, in spatiul 3D. Este practic un wrapper peste DirectX, facut cu un singur scop:productivitatea.

Post Reply