View Full Version : Librerie grafiche
Immagino che a qualcuno possa sembrare scontato, ma vorrei qualche chiarimento in merito alle seguenti librerie grafiche del tipo: in che linguaggio si programmano?, sono fatte per il 3d?, utilizzano direttamente l'hardware grafico?, quale relazione c'e' tra di loro(una utilizza l'altra?), che relazione hanno con il presentation layer del sistema?.
OpenGL - DirectX - QT - GTK - JAVA3D - AWT(JAVA) - SWING (JAVA)
Spero di riuscire a togliermi qualche dubbio
OpenGL è una libreria grafica che utilizza direttamente l'hardware grafico.
Fornisce primitive di basso livello per il solo disegno 2d-3d. Non si occupa di gestire finestre, pixel buffer, double buffer, input etc. Queste funzioni sono delegate al sistema di gestione a finestre dell'os.
L'equivalente di Opengl non è directX ma direct3d, in quanto directX contiene anche altre librerie utili alla creazione di un videogioco come direct input, direct sound e altre..
Qt è un framework multipiattaforma per lo sviluppo di applicazioni di vario genere,
permette di sviluppare applicazioni di vario tipo, contiene classi per il rendering html, per l'interazione con i database, per la creazione di GUI, per il disegno 2d.
Per quanto riguarda la grafica 2d e le GUI si appoggia alle librerie fornite dall'os, ad esempio su Linux utilizza le xlib, su mac os utilizza carbon.
GTK è analogo a qt.
Java 3d si appoggia a opengl o directx.
Per quanto riguarda swing e awt non ti so dire molto.
Qt, gtk , directX e opengl si possono utilizzare con quasi tutti i linguaggi più diffusi.
banryu79
03-10-2008, 10:22
Awt e Swing fanno parte delle Java Fundation Classes (JFC) e sono delle librerie GUI.
In questo link (http://dn.codegear.com/article/26970) c'è un confronto di entrambe.
Intanto vi ringrazio delle risp.
Vi sarei grato di chiarirmi un po' meglio la frase
OpenGL è una libreria grafica che utilizza direttamente l'hardware grafico.
Fornisce primitive di basso livello per il solo disegno 2d-3d. Non si occupa di gestire finestre, pixel buffer, double buffer, input etc. Queste funzioni sono delegate al sistema di gestione a finestre dell'os.
Non ho molte nozioni di grafica... in pratica con opengl si costruiscono oggetti 2d e 3d e l'hw li elabora direttamente? In che senso? In parole povere il processore "demultiplexa" i blocchi di istruzioni e passa al processore GPU quelle riguardanti la grafica 2d e 3d?
Poi ho visto anche wxwidgets... anche queste che servono per le finestre ecc.. si appoggiano comunque alle api del so?
Grazie ancora:mc:
Le opengl non lavorano su oggetti 3d, ma su primitive grafiche come i vertici e triangoli:
Ad esempio:
glBegin(GL_TRIANGLES);
glVertex3f(-1.0f, -0.5f, -4.0f);
glVertex3f( 1.0f, -0.5f, -4.0f);
glVertex3f( 0.0f, 0.5f, -4.0f);
glEnd();
Permettono poi di applicare textures, impostare particolari condizioni di illuminazione, etc. Cosa viene eseguito in hardware e cosa in software dipende dalla particolare implementazione di opengl.
Per quanto riguarda wxwigets anche queste si appoggiano (non so quando direttamente) alle api del SO.
Se ti interessa sviluppare GUI, secondo me la soluzione migliore è qt.
Puoi addirittura applicare i fogli di stile CSS ai componenti di una GUI.
Ad esempio:
myDialog->setStyleSheet("QPushButton { background-color: yellow }");
banryu79
03-10-2008, 11:40
Non ho molte nozioni di grafica... in pratica con opengl si costruiscono oggetti 2d e 3d e l'hw li elabora direttamente? In che senso? In parole povere il processore "demultiplexa" i blocchi di istruzioni e passa al processore GPU quelle riguardanti la grafica 2d e 3d?
Per quel che ne so, durante il processo di rendering in OpenGL (Rendering Pipeline) ci sono operazioni che vengono eseguite appoggiandosi alla corrispondente implementazione hardware esposta dalla scheda grafica sottostante.
Quindi OpenGL fa chiamate direttamente alla scheda grafica.
Poi ho visto anche wxwidgets... anche queste che servono per le finestre ecc.. si appoggiano comunque alle api del so?
Dalla home page del sito wxWidgets si legge che:
wxWidgets lets developers create applications for Win32, Mac OS X, GTK+, X11, Motif, WinCE, and more using one codebase. It can be used from languages such as C++, Python, Perl, and C#/.NET. Unlike other cross-platform toolkits, wxWidgets applications look and feel native. This is because wxWidgets uses the platform's own native controls rather than emulating them. It's also extensive, free, open-source, and mature.
Ci sono modi, tool(grafici o non), librerie per convertire un oggetto creato con 3dsmax, maya... in triangoli e vertici opengl?
banryu79
03-10-2008, 15:49
Stralcio di spiegazione della situazione, dalla pagina della faq (http://www.opengl.org/resources/faq/technical/miscellaneous.htm) di Opengl:
24.040 How can I load geometry files, such as 3DS, OBJ, DEM, etc. and render them with OpenGL?
OpenGL, being a 3D graphics API, has no built-in support for reading application-specific file formats. If you're writing an application that needs to read a specific file type, you'll need to add code to support a particular file type.
Many OpenGL users already have written code to do this, and in some cases, the code is available on the Web. A few are listed here. If you can't find what you are looking for, you might try doing a Web search.
Nel web puoi trovare di tutto. Io in tre secondi ho trovato questo (http://sourceforge.net/projects/c3ds/).
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.