Results 1 to 7 of 7

Thread: Domande assortite C++ e OpenGL Vs Directx

  1. #1
    Warrant Officer
    Join Date
    Nov 2003
    Location
    Suisse
    Posts
    2.969

    Default Domande assortite C++ e OpenGL Vs Directx

    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 !

  2. #2
    Lieutenant Commander Rayvaughan's Avatar
    Join Date
    Mar 2005
    Location
    45.663989,8.783906
    Posts
    17.274

    Default

    io starebbi su win per comodità generale

    OT: meglio ancora se si trovasse qualcosa di molto simile a Valgrind per win

  3. #3
    Lieutenant
    Join Date
    Feb 2004
    Location
    Bresso
    Posts
    4.683

    Default

    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.

  4. #4
    Warrant Officer
    Join Date
    Nov 2003
    Location
    Suisse
    Posts
    2.969

    Default

    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 ?

  5. #5
    Lieutenant Commander San Vegeta's Avatar
    Join Date
    Oct 2003
    Location
    Bologna
    Posts
    12.153

    Default

    Quote Originally Posted by NoeX View Post
    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

    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
    Se vuoi fare grafica, questo è il sito che vorrai visitare nei prossimi mesi nehe.gamedev.net

    auguri
    I rubinetti a casa di Chuck Norris non perdono, vincono.

    In the beginning there was nothing...then Chuck Norris Roundhouse kicked that nothing in the face and said "Get a job". That is the story of the universe.

    Quote Originally Posted by Wolfo View Post
    Concordo e propongo ban temporanei per chi critica la topa , la topa non si critica , dal trombabile in su non si commenta in modo sgradevole.
    la tua ignoranza in materia e' raccapricciante
    -cit. Estrema, 2022

  6. #6
    Lieutenant
    Join Date
    Feb 2004
    Location
    Bresso
    Posts
    4.683

    Default

    Quote Originally Posted by NoeX View Post
    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/libr...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.

  7. #7
    Warrant Officer
    Join Date
    Nov 2003
    Location
    Suisse
    Posts
    2.969

    Default

    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

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
[Output: 66.98 Kb. compressed to 57.52 Kb. by saving 9.46 Kb. (14.12%)]