2010-08-01 4 views
9

Voglio imparare Ocaml o Haskell e voglio farlo scrivendo un semplice gioco. Apparentemente, c'è un piccolo problema: a nessuno importa di Windows e voglio farlo su Windows, in modo nativo.Haskell o Ocaml con distribuzione precompilata OpenGL e SDL per Windows

Haskell ha Cabal, che ha SDL, ma non si costruisce a causa di un problema banale senza soluzioni (ordine dei parametri passati a gcc). Ocaml non ha nemmeno questo, è tutto nei pacchetti sorgente, sia esso GLCaml o OcamlSDL o qualsiasi altra cosa.

C'è un posto dove posso ottenere un SDL funzionante per Haskell o Ocaml su Windows senza combattere con una dozzina di versioni di compilatori?

+1

Godi e OASIS sono due sistemi simili a Cabal per OCaml, ma non li sto proponendo come risposte perché non so quanto bene funzionino sotto Windows. –

+2

Questo è davvero un grosso problema, ho affrontato lo stesso problema un anno fa, ma ho rinunciato e progettato il mio gioco su Ubuntu con OCamlSDL, ecco un link al gioco se interessato http://web.martani.net/worms – 0xFF

+0

Inizia con la piattaforma Haskell per Windows: http://haskell.org/platform –

risposta

5

La piattaforma Haskell è dotata di un collegamento a OpenGL che dovrebbe funzionare immediatamente su Windows.

Per quanto riguarda il pacchetto SDL in hackage, è possibile utilizzare cabal unpack SDL per ottenere il codice sorgente e correggere le cose da soli. Per installare il pacchetto con le modifiche, eseguire cabal install nella directory decompressa. In ogni caso, lascia una riga al manutentore, sono certo che ti aiuterà.

+0

il problema AFAIK non è nemmeno nel pacchetto; [ecco una spiegazione più dettagliata] (http://jpmoresmau.blogspot.com/2010/05/haskell-sdl-on-windows-check-hacking.html). – Baczek

+1

Ah, schifo! Il problema che la libreria SDL ridefinisce la funzione 'main' con una macro CPP. La vera funzione 'main' è nella DLL!Questo è probabilmente il motivo per cui gli argomenti del linker devono essere scambiati. In breve, la colpa è di libSDL, il cui design non funziona bene con qualsiasi tipo di interfaccia straniera. –

+0

Immagino che la tua unica risorsa sia installare temporaneamente una versione personalizzata di hsc2hs con la correzione di JP Moresau. Oppure si può essere davvero subdoli e sostituire GCC con un programma wrapper che intercambia gli argomenti prima di passarli al GCC reale. –

1

Non è correlato a SDL, ma hai menzionato OpenGL. Vi è il LablGL vincolante per OpenGL in OCaml che funziona fuori dalla scatola. Esempio Wiki (http://en.wikipedia.org/wiki/Objective_Caml#Triangle_.28graphics.29) compila e funziona bene.

+0

Sembra che supporti solo l'antica variante di OpenGL - Non vedo i programmi vertici/frammenti, ecc. – Baczek

+0

@Baczek: Come ho detto nella mia risposta, i binding GLCaml supportano vertex e framment shader e li ho usati . Tuttavia, se intendi distribuire ciò che scrivi, ti sconsiglio di utilizzare OCaml o Haskell per questo. –

1

Le migliori istruzioni che ho trovato per far funzionare SDL in Windows con la più recente piattaforma Haskell sono disponibili al this blog. Ho seguito tutto passo-passo e ha funzionato perfettamente, nonostante alcuni messaggi di errore configurati.

1

Non è SDL ma GLFW funziona su Windows con Haskell tramite Cabal.

0

Il mio articolo High-fidelity graphics with OpenGL 2 (25 febbraio 2008) ha spiegato come i binding GLCaml possono essere utilizzati per scrivere applicazioni basate su OpenGL in OCaml che utilizzano vertex e shader di frammenti (un phong shader viene fornito come esempio). Ci sono nel Journal OCaml su OpenGL, anche se per lo più utilizzano la precedente libreria LablGL per OpenGL 1.1.

Ho provato e non riuscito a far funzionare OpenGL da Haskell sotto Linux nel 2007. Lo Haskell Platform potrebbe averlo cambiato, ma non ho avuto il tempo di provarlo e nemmeno di averne mai sentito parlare.

Tuttavia, sia OCaml e Haskell devono fare affidamento su attacchi di basso livello fragili per OpenGL, perché sono lingue autonome e nessuno è mai riuscito a ottenere qualsiasi software commerciale significativo che li utilizzano per lavorare. Dato che sei su Windows, F # + XNA è una scelta molto più logica perché XNA è provato e testato e F # ha un'interfaccia di alto livello sicura ad esso. Un combattimento di Google ti dà una buona idea di cosa sarai un pioniere: +haskell +opengl dà 437 risultati su Google e +ocaml +opengl dà solo 347 risultati.

+1

Sfortunato che la risposta più pragmatica, specialmente l'ultimo paragrafo, sia stata declassata. –

Problemi correlati