2011-10-24 13 views
11

Sto provando a scrivere un mondo ciao per OpenGL su Mac (Lion). Ho trovato alcuni related post o youtube tutorial, ma molti richiedono XCode. Sto bene con XCode, ma ho pensato che ci dovrebbero essere alcuni approcci più semplici per scrivere solo un mondo ciao, simile a scrivere un file .cpp in vim sotto terminale, compilare ed eseguire. (ovviamente installa le librerie se necessario in anticipo)OpenGL Hello World su Mac senza XCode

Qualche idea o suggerimento?

risposta

17

Se si utilizza OSX, si consiglia vivamente di utilizzare XCode e utilizzare NSOpenGLView. Il libro This contiene molto materiale riguardante le diverse API che è possibile utilizzare. GLUT è sicuramente il più veloce da gestire e da configurare.

Se si desidera utilizzare GLUT e compilare presso il terminale si potrebbe provare questo:

#include <GLUT/glut.h> 

void display(void) { 

    //clear white, draw with black 
    glClearColor(255, 255, 255, 0); 
    glColor3d(0, 0, 0); 

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

    //this draws a square using vertices 
    glBegin(GL_QUADS); 
    glVertex2i(0, 0); 
    glVertex2i(0, 128); 
    glVertex2i(128, 128); 
    glVertex2i(128, 0); 
    glEnd(); 

    //a more useful helper 
    glRecti(200, 200, 250, 250); 

    glutSwapBuffers(); 

} 

void reshape(int width, int height) { 

    glViewport(0, 0, width, height); 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 

    //set the coordinate system, with the origin in the top left 
    gluOrtho2D(0, width, height, 0); 
    glMatrixMode(GL_MODELVIEW); 

} 

void idle(void) { 

    glutPostRedisplay(); 
} 

int main(int argc, char *argv) { 

    //a basic set up... 
    glutInit(&argc, &argv); 
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH); 
    glutInitWindowSize(640, 480); 

    //create the window, the argument is the title 
    glutCreateWindow("GLUT program"); 

    //pass the callbacks 
    glutDisplayFunc(display); 
    glutReshapeFunc(reshape); 
    glutIdleFunc(idle); 

    glutMainLoop(); 

    //we never get here because glutMainLoop() is an infinite loop 
    return 0; 

} 

e quindi compilare con:

gcc /System/Library/Frameworks/GLUT.framework/GLUT /System/Library/Frameworks/OpenGL.framework/OpenGL main.c -o myGlutApp 

Questo dovrebbe fare il trucco. Direi comunque che non provi a combattere XCode, ti farà risparmiare tempo e frustrazione.

+0

Ho provato il metodo in terminale ma ho ricevuto: ciao.c: 47: 21: errore: GL/glut.h: nessun file o directory – clwen

+0

hmmm, sto eseguendo 10.6 (snow leopard) e funziona. puoi verificare di avere GLUT sul tuo sistema? hai installato XCode e gli strumenti di sviluppo di Apple? – whg

+0

Funziona dopo aver modificato il percorso di inclusione da "GL/glut.h" a "GLUT/glut.h". Molte grazie! – clwen

0

Provare a utilizzare GLUT e scrivere un piccolo programma C++. Puoi usare qualcosa come Macport per installare le librerie necessarie.

-1

Cerca online l'esempio/codice tutorial di qualsiasi libro su OpenGL. Iniziano tutti con programmi molto semplici che richiedono al massimo GLUT (come menzionato da un altro poster) e generalmente hanno istruzioni su come costruirli. Quindi basta scaricare uno di questi semplici programmi e farlo funzionare.

5

Questo è un po 'vecchio ma ti rispondo perché ho appena imparato come farlo. Innanzitutto ci sono due errori nel codice di esempio sopra, sono facili da risolvere. Su OS X 10.8 usando clang questo funziona.

Il codice sopra riportato deve essere compilato. Tuttavia, la firma della funzione principale è errata.

<int main(int argc, char *argv) 
>int main(int argc, char **argv) 

Il che rende il glutInit sbagliato,

<glutInit(&argc, &argv); 
>glutInit(&argc, argv); 

L'uscita fa schifo, ma fa una finestra e si mostra come usare i quadri con clangore. Grazie per il file di avvio.

+0

La correzione di Ivan ha funzionato per me, (OSX Mavericks). https://gist.github.com/omenking/35b920a1d2cbf99fc6f2 Per eseguire il file a.out, basta mettere /a.out nella riga di comando. –