View Full Version : Domande assortite C++ e OpenGL Vs Directx
NoeX
13th January 2011, 20:13
Ave a tutti
Ho un pò di tempo libero e mi pareva una buona occasione imparare il C++.
Venendo da Java e C pensate che incontrerò delle difficoltà particolari ?
Che OS mi consigliate per iniziare ? Windows O Linux ? Perchè pensavo (se c'è la possibilità ovviamente) di farmi una libreria (a livello di codice) portabile tra OS.
Naturalmente DLL su Linux non vanno, e le lib di Linux non funzionano, però qui si parla a livello di 'build', o anche di source code ? E' pensabile di usare solo l'ANSI C++ o sei 'costretto' a usare le funzioni del sistema operativo ?
--
Per farmi una applicazione 3D, anche qua quale è la migliore tra DirectX e OpenGl a livello di performance e velocità di sviluppo\learning curve ?
DirectX solo MS ovviamente, quando OpenGL è multi.
--
Nel caso scegliessi Windows, dato che inizialmente voglio creare una libreria che sarà riutilizzata in altri progetti, devo fare una DLL Win32, corretto ? Ma se la volessi a 64 bit come farei ? Mi sto guardando ora MSDN per le DLL ATL
MFC ho visto che serve per la grafica credo, e a leggere sul wiki pare sia in disuso per la troppa complessità...
Lo scopo della libreria DLL iniziale è l'implementazione di algoritmi, per questa ragione la faccio in C++ così ho puntatori e mi faccio le ossa :-)
Mi sono fatto una VM con Ubuntu, g++ e via, Visual Studio ha un sacco di template iniziali...
A voi !
Rayvaughan
13th January 2011, 20:19
io starebbi su win per comodità generale
OT: meglio ancora se si trovasse qualcosa di molto simile a Valgrind per win :nod:
Kat
15th January 2011, 15:04
Il C++ non e' poi cosi portabile senza sforzo, non tanto per il linguaggio in se, ma per le sue implementazioni.
In particolare la Microsoft ne fornisce una sua interpretazione. Tutto questo ti costringe in genere a utilizzare #ifdef in base al sistema operativo, se ti va bene solo per definizioni di tipi (interi, stringhe ecc) o include, se ti va male per intere parti di codice.
Per la libreria dipende tutto da che cosa deve fare, se non deve usare chiamate di basso livello o elementi propri di un OS come mutex, semafori, thread, oggetti di sincronizzazione, allora te la puoi cavare solo con le librerie standard c++.
In generale puoi cmq realizzare la stessa base di codice (con ifdef come detto), e poi compilarla con il compilatore microsoft su win e con quello che preferisci su linux.
Per decidere dovresti anche valutare l'ambiente di sviluppo, se usi visual studio sicuramente ti semplifica le cose su win, pero l'ide ti aggiunge al codice tanta di quella roba in automatico, che poi portarlo su linux puo diventare un lavoraccio.
Su Linux non so che ide ci siano per c++ (Eclipse con i plugin?), ma magari c'e' qualcosa che non ti azzoppa cosi tanto in ottica portabilita.
Inoltre lascerei perdere MFC o ATL, che sono tecnologie legate strettamente a MS, oltre a non avere una buona curva di apprendimento.
Infine del 3D, Directx e OpenGL non so nulla di piu di quello che hai scritto tu.
NoeX
15th January 2011, 19:31
Ciao Kat, grazie della risposta. Io ho trovato questo link sul sito di Mozilla
https://developer.mozilla.org/en/C___Portability_Guide
dove espone diversi problemi sulla portabilità. Considerando che devo imparare, mi sà tanto che al diavolo Linux e mi concentro sul C++ Microsoft. La portabilità me ne preoccuperò più avanti, che dici ? Devo fare un progetto Win32, corretto ? Ma Win64 non c'è come template ?
San Vegeta
15th January 2011, 19:54
Ave a tutti
Ho un pò di tempo libero e mi pareva una buona occasione imparare il C++.
Venendo da Java e C pensate che incontrerò delle difficoltà particolari ?
No. C++ supporta entrambi i paradigmi e richiede attenzione (come in C) quando si alloca memoria. La differenza che più si sente tra C++ e Java è la scarsità di librerie di base fornite col C++
Che OS mi consigliate per iniziare ? Windows O Linux ? Perchè pensavo (se c'è la possibilità ovviamente) di farmi una libreria (a livello di codice) portabile tra OS.
Naturalmente DLL su Linux non vanno, e le lib di Linux non funzionano, però qui si parla a livello di 'build', o anche di source code ? E' pensabile di usare solo l'ANSI C++ o sei 'costretto' a usare le funzioni del sistema operativo ?
Se programmi sotto unix puoi portare il codice un po' ovunque, se programmi sotto windows la portabilità diminuisce. Io quando facevo il motore 3d programmavo con le OpenGL sotto Windows e facevo i test veri sotto unix.
Le DLL sono librerie particolari, le librerie TUE sono codice compilato che gira ovunque (a patto di non usare szstem call proprie del SO)
Per farmi una applicazione 3D, anche qua quale è la migliore tra DirectX e OpenGl a livello di performance e velocità di sviluppo\learning curve ?
DirectX solo MS ovviamente, quando OpenGL è multi.
Le directX 11 (forse anche le 10, ma non sono aggiornato) sono migliori delle opengl3 al momento. opengl fa delle belle cose ma ha il problema della portabilità su tutte le piattaforme, che rallenta l'uscita di versioni competitive. In ogni caso opengl dà performance di tutto rispetto ed è più veloce da imparare. Se usi opengl, probabilmente vorrai appoggiarti a un altro set di librerie che gira sopra opengl per facilitarti l'utilizzo di menu, forme comuni e feature del genere.
Nel caso scegliessi Windows, dato che inizialmente voglio creare una libreria che sarà riutilizzata in altri progetti, devo fare una DLL Win32, corretto? Ma se la volessi a 64 bit come farei ? Mi sto guardando ora MSDN per le DLL ATL
MFC ho visto che serve per la grafica credo, e a leggere sul wiki pare sia in disuso per la troppa complessità...
No, le librerie sono set di funzioni compilate. Le DLL sono librerie che implementano delle interfacce particolari e sono ristrette a windows perchè interagiscono con quel sistema operativo.
Lo scopo della libreria DLL iniziale è l'implementazione di algoritmi, per questa ragione la faccio in C++ così ho puntatori e mi faccio le ossa :-)
i puntatori li hai anche in java e in c :p
Mi sono fatto una VM con Ubuntu, g++ e via, Visual Studio ha un sacco di template iniziali...
A voi !
Se devi imparare, i template non ti servono. in realtà i template servono a poco pure quando hai imparato :p
Se vuoi fare grafica, questo è il sito che vorrai visitare nei prossimi mesi nehe.gamedev.net
auguri :)
Kat
15th January 2011, 22:10
Ciao Kat, grazie della risposta. Io ho trovato questo link sul sito di Mozilla
https://developer.mozilla.org/en/C___Portability_Guide
dove espone diversi problemi sulla portabilità. Considerando che devo imparare, mi sà tanto che al diavolo Linux e mi concentro sul C++ Microsoft. La portabilità me ne preoccuperò più avanti, che dici ? Devo fare un progetto Win32, corretto ? Ma Win64 non c'è come template ?
Sinceramente per i 64bit non saprei, ho trovato questo link, vedi se ti e' utile:
http://msdn.microsoft.com/en-us/library/9yb4317s(v=VS.100).aspx
In sostanza devi scaricare i compilatori a 64bit e configurare l'ide con target piattaforma a 64bit.
In effetti dovendo imparare ti conviene partire da MS, almeno Visual Studio ti nasconde una serie di problematiche che all'inizio danno solo fastidio e non sono strettamente necessarie per imparare il linguaggio.
NoeX
18th January 2011, 22:45
Grazie delle risposte, DirectX scaricate intanto...
Inizio a farmi una DLL più classe di test intanto :-)
Una ultima cosa, anzi due :)
A me a lavoro ogni tanto capita che da C# invocare tramite COM dei metodi di altre classi, ho letto che COM è un modo per interfacciarsi con altri oggetti, ma quali sono gli altri ? Perchè ho letto da qualche parte che è un modo 'scomodo' e vecchio...
In C++ la documentazione dei metodi non c'è vero ? Intendo proprio i tooltip con la descrizione dei metodi tipo Javadoc \ Intellisense
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.