[OPENGL]Programmare in Windows

franbisc
Fin'ora compilavo i miei file c++/c + OPENGL con il gcc di linux.
In windows non ho la più pallida idea di cosa usare,che librerie installare,come installarle ecc...
Mi dareste una mano?

Risposte
apatriarca
Che compilatore/IDE sei interessato ad usare? Le OpenGL sono già incluse nel Platform SDK (e nella installazione di Visual Studio e probabilmente altri IDE). Devi però decidere cosa usare per creare le finestre (win32, sdl, freeglut, qt.. ) e come gestire le estensioni e le versioni recenti. Se ci dai maggiori informazioni sugli strumenti che pensi di utilizzare o ai quali eri abituato in linux, forse possiamo darti una mano.

franbisc
"apatriarca":
Che compilatore/IDE sei interessato ad usare? Le OpenGL sono già incluse nel Platform SDK (e nella installazione di Visual Studio e probabilmente altri IDE). Devi però decidere cosa usare per creare le finestre (win32, sdl, freeglut, qt.. ) e come gestire le estensioni e le versioni recenti


Qualsiasi strumento che permetta di installare e configurare meno cose possibili e che sia gratuito,tanto l'uso che devo farne è la compilazione di semplici progettini universitari.

apatriarca
Ma che librerie usate su Linux? Le OpenGL non comprendono alcuna funzionalità per creare le finestre o gestire eventi generati dal mouse o tastiera..

franbisc
Le GLUT

franbisc
Ho scelto come IDE Dev C++, e come detto le uniche librerie che mi servono sono GL, GLU e GLUT.
Fin'ora ho fatto le seguenti configurazioni:
-Ho copiato i file glut.dll e glut32.dll in c:\Windows\system32
-Ho copiato il file glut.h all'interno della cartella include\GL del Dev-c++ in cui c'erano già gl.h e glu.h.
-Ho copiato i file glut32.def nella cartella lib del Dev-Cpp,in cui era già presente il file libglut.a
-Quando creo un progetto con Dev scelgo "Multimedia" -> "OpenGL",poi dal Menu "Progetto" -> "Opzioni di progetto"-> "Parametri"-> "Linker" ho aggiunto le seguenti voci:
-lglut32
-lglu32
-lopengl32

A questo punto provo a compilare un progetto che girava su linux,con la sola aggiunta della riga
#include <windows.h>
,non dà errori di compilazione,ma non visualizzo niente,cioè non si apre nessuna finestra nè altro.Quando clicco direttamente sull'eseguibile invece mi dice "Impossibile avviare il programma perchè glut32.dll non è presente nel computer"

apatriarca
Che cosa ti ha portato a scegliere Dev-C++ come IDE? E' tra le peggiori scelte che potevi probabilmente fare. Siccome stai programmando su Windows, la scelta più logica sarebbe quella di usare gli strumenti di sviluppo di Microsoft. Tra gli strumenti gratuiti potresti quindi installare Visual Studio Express 2013 for Windows Desktop. Dopodiché dovrebbe essere sufficiente andare sul sito di freeglut, scaricarsi i file binari e seguire le indicazioni su come configurare Visual Studio. Considerando che stai però seguendo un corso basato su linux, potresti però ripiegare su qualcosa come Code::Blocks (è incredibilmente meglio di Dev-C++).

Potresti mostrare il codice comunque? Non c'è alcun bisogno di includere Windows.h per poter usare glut in Windows..

franbisc
"apatriarca":
Che cosa ti ha portato a scegliere Dev-C++ come IDE?

E' l'unico su cui ho trovato un minimo di istruzioni

"apatriarca":
Potresti mostrare il codice comunque? Non c'è alcun bisogno di includere Windows.h per poter usare glut in Windows..

#include<GL/glut.h>
#include<GL/gl.h>
#include<GL/glu.h>
#include<math.h>

void redraw()
{
  glClearColor(0.7f,4.5f,0.0f,1.0f);
  glClear(GL_COLOR_BUFFER_BIT);
  glBegin(GL_POINTS);
   glColor3f(0.0f,0.0f,0.0f);
   glVertex2f(0.0f,0.0f);
  glEnd();
  glFlush();
}


int main(int argc,char** argv)
{
   glutInit(&argc, argv);
   glutInitDisplayMode ( GLUT_RGB );
    glutInitWindowPosition( 300, 300 );
    glutInitWindowSize ( 550, 550 );
    glutCreateWindow ( "Esempio" );
    glutDisplayFunc( redraw );
    glutMainLoop ();
}

apatriarca
Per prima cosa ti direi di abbandonare GLUT in favore di freeglut. GLUT è stata abbandonata nel 2001 e diverse alternative open source hanno tentato di prendere il suo posto. Freeglut è quella più sviluppata e diffusa. E' ormai in grado di fare cose che la libreria originale non faceva e ha un maggior supporto per le più moderne versioni dei sistemi operativi. Di fatto, quando installi GLUT su un sistema Linux moderno, installi freeglut.

Se vai in questa pagina trovi le librerie già precompilate per Windows (MSVC è Visual Studio mentre MinGW è il porting di gcc su Windows).

In questo momento non ho modo di verificarlo (anche se dalla scritta di fianco sembra sia su Linux in realtà sto scrivendo dal mio tablet Android e non ho GLUT installato), ma credo che gl.h sia automaticamente incluso con glut.h (usando freeglut puoi anche usare freeglut.h). Mentre glu.h non è necessario in quanto non stai usando alcuna funzione di tale header.

In che senso non vedi nulla comunque? Non si apre neanche la finestra? Oppure non vedi nulla all'interno della finestra?

franbisc
Ma le librerie che trovo nel link sono anche per Dev? In quale cartella dovrei metterle?
Comunque non si apre nemmeno la finestra.

apatriarca
La versione per MinGW. Ma su Dev-C++ non so aiutarti. Ho smesso di usarlo una decina di anni fa quando il suo sviluppo è terminato. Anche se il suo sviluppo è ripartito di recente, è così tanto indietro alle altre alternative che non vedo motivi per usarlo.

albiy
Quel codice ti dovrebbe far aprire una finestra gialla con un pixel nero al centro (quindi quasi invisibile).

EDIT: a me il tuo codice compila e funziona

apatriarca
Il problema non credo sia nel codice, sembra corretto e dovrebbe funzionare, probabilmente è un problema di installazione delle librerie o altro. Come hai compilato il codice? A 32 o 64 bit? Non so se Dev-C++ supporti la compilazione a 64 bit, ma potrebbe essere questo il problema. Che versione di Windows usi? Se non ricordo male la GLUT originale ha qualche problema con le ultime versioni (motivo per cui ti ho consigliato di passare a freeglut).

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.