Domanda

Ho un'applicazione M ++ C ++ matura che viene visualizzata sullo schermo e stampata usando involucri CDC sul GDI Win32. Sebbene sia stato ottimizzato nel corso degli anni, vorrei sostituirlo con qualcosa di un po 'più veloce. La grafica includeva modelli di superfici triangolari renderizzate, polilinee e poligoni complessi e molto testo. Deve soddisfare i seguenti criteri;

  • È probabile che il numero di vettori visualizzati sia molto elevato. Ad esempio, è probabile che un singolo triangolo di superficie generi linee di numero e riempimenti solidi quando viene eseguito il rendering. Al momento queste informazioni non vengono archiviate da nessuna parte, vengono generate e disegnate al volo. L'SDK dovrebbe supportare la limitazione del numero totale di vettori bufferizzati, oppure potrebbe esaurire la memoria.

  • L'SDK dovrebbe essere in grado di eseguire il rendering su qualsiasi classe derivata da CW e comprese le classi CView e ScrollView.

  • L'SDK dovrebbe supportare la stampa su qualsiasi dispositivo di stampa Windows,

  • L'SDK dovrebbe essere di livello abbastanza basso da rendere relativamente semplice la porta da chiamate CDC / GDI di basso livello.

  • L'open source è sempre bello, ma un costo una tantum fino a $ 2k, con aggiornamenti / supporto opzionali sarebbe anche ok. Un costo di licenza per utente non è accettabile,

  • L'accesso al codice sorgente sarebbe un grosso vantaggio, in particolare con l'idea di eseguire porzioni dell'SDK su Windows CE / Mobile.

  • Attualmente gestisco la mia gestione delle finestre da 3d a 2d. Se non è disponibile un SDK di basso livello decente, un SDK di livello superiore deve gestire bene 3d e funzionare con milioni di triangoli, poligoni ed entità di testo su una piattaforma Windows a 32 bit.

Qualche suggerimento? Elencare i vantaggi e gli svantaggi specifici nel suggerimento proposto sarebbe molto apprezzato.

È stato utile?

Soluzione

Una volta ho valutato FastGraph ( http://www.fastgraph.com ) per un progetto. Mi è piaciuto nei piccoli programmi di test che ho scritto, è stato molto veloce. Abbiamo finito per non usarlo per motivi esterni (niente a che fare con le librerie che ho valutato) quindi non ho più esperienza pratica.

Altri suggerimenti

Penso che DirectX o SDL soddisfino le tue esigenze. Sono progettati per il 3D ma funzionano anche per il 2D. Entrambi supportano Windows CE / Mobile e SDL è disponibile anche per diversi sistemi operativi non Microsoft.

Sfortunatamente la compatibilità diretta con GDI non è supportata nelle librerie. Ma puoi fare il trucco creando una classe di convertitore, che accetterà tutta la grafica di output dalle tue classi di applicazione progettate da GDI e convertirà il formato per soddisfare le esigenze delle classi DirectX o SDL (a seconda di cosa vuoi usare).

Personalmente ho creato una tale classe di convertitore una volta. Avevo un gioco scritto per Pocket PC, usando SDL e avevo bisogno di portarlo sul dispositivo Palm. Lì ho dovuto usare diverse librerie grafiche (non ricordo il nome della lib ora) ma sono riuscito a trasferire tutte le funzioni SDL in uscita nel formato richiesto dall'altra lib. Avevo bisogno di cambiare la mia applicazione per chiamare le funzioni del convertitore (wrapper), che inoltrano la chiamata alla libreria Palm o Pocket PC, a seconda del dispositivo attualmente in esecuzione. Quindi penso che tu possa fare lo stesso per convertire GDI - > DirectX o GDI - > SDL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top