Ho cercato di installare le librerie OpenGL e GLUT in Eclipse, con CDT, su OS X con non molto successo. Non riesco a ottenere l'eclisse per rendermi conto di dove si trova GLUT. Attualmente mi sta dando l'errore che ho un'inclusione non risolta GL/glut.h. Guardando in giro online ho scoperto che dovrei usare il flag -framework GLUT nelle impostazioni di gcc linker, ma questo sembra inefficace.OpenGL e GLUT in Eclipse su OS X
risposta
Ok. L'ho fatto funzionare in X11. Il motivo per cui ho potuto farlo funzionare su X11 è che sembra che le librerie OpenGL sul SO siano per l'architettura a 64-bit, ma eclipse compilerà il codice solo se usiamo l'architettura a 32-bit. Forse se questo fosse risolto potremmo usare le librerie preinstallate di OS X. Inoltre, forse c'è una versione a 32 bit che gira sul sistema operativo che potremmo usare ma non riesco a trovarla. Tuttavia, mi accontento di usare X11 per i miei scopi di apprendimento.
Per prima cosa crea il tuo progetto C++. Allora perché non si può compilare il codice in a 64 bit utilizzando Eclipse aggiungere la seguente ...
alt text http://img132.imageshack.us/img132/5163/step1c32bit.png
alt text http://img251.imageshack.us/img251/5163/step1c32bit.png
alt text http://img132.imageshack.us/img132/2325/step1linker32bit.png
allora avete bisogno le librerie e il collegamento istituito. Per fare questo procedere come segue:
alt text http://img29.imageshack.us/img29/1904/step2linkerglglu.png
alt text http://img196.imageshack.us/img196/4313/step2glut.png
Infine è necessario impostare una variabile DISPLAY.
alt text http://img40.imageshack.us/img40/7306/step3display.png
Prima di provare ad eseguire l'avvio X11.
Provare il seguente codice per ottenere qualcosa che ho eseguito nella mia macchina. Spero che funzioni per te!
//#include <GL/gl.h>
//#include <GL/glu.h>
#include <GL/glut.h>
#define window_width 640
#define window_height 480
// Main loop
void main_loop_function() {
// Z angle
static float angle;
// Clear color (screen)
// And depth (used internally to block obstructed objects)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Load identity matrix
glLoadIdentity();
// Multiply in translation matrix
glTranslatef(0, 0, -10);
// Multiply in rotation matrix
glRotatef(angle, 0, 0, 1);
// Render colored quad
glBegin(GL_QUADS);
glColor3ub(255, 000, 000);
glVertex2f(-1, 1);
glColor3ub(000, 255, 000);
glVertex2f(1, 1);
glColor3ub(000, 000, 255);
glVertex2f(1, -1);
glColor3ub(255, 255, 000);
glVertex2f(-1, -1);
glEnd();
// Swap buffers (color buffers, makes previous render visible)
glutSwapBuffers();
// Increase angle to rotate
angle += 0.25;
}
// Initialze OpenGL perspective matrix
void GL_Setup(int width, int height) {
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glEnable(GL_DEPTH_TEST);
gluPerspective(45, (float) width/height, .1, 100);
glMatrixMode(GL_MODELVIEW);
}
// Initialize GLUT and start main loop
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitWindowSize(window_width, window_height);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
glutCreateWindow("GLUT Example!!!");
glutDisplayFunc(main_loop_function);
glutIdleFunc(main_loop_function);
GL_Setup(window_width, window_height);
glutMainLoop();
}
A seconda della libreria GLUT installata in OS X, l'inclusione potrebbe essere diversa.
Sul mio sistema devo usare:
#include <GLUT/glut.h>
Per assicurarsi il mio codice è multipiattaforma Io uso la seguente dichiarazione pre-processore:
#if defined(__APPLE__) && defined(__MACH__)
# include <GLUT/glut.h>
#else
# include <GL/glut.h>
#endif
che potrebbero risolvere alcuni o ai vostri problemi .
volevo dire che ho fatto cambiare la include allo stato GLUT/glut.h ma questo sembra ancora non hanno risolto il problema. Credo che la libreria GLUT che ho installato fosse dalla versione di macports. Ho anche installato XCode e ho tutte le librerie da lì. – fastrack20
La directory di installazione predefinita per MacPorts è/opt/local. Potrebbe essere/opt/local non aggiunto al percorso di inclusione del compilatore in Eclipse. O quello, o reinstallare Xcode per darti GLUT/glut.h sul percorso di inclusione predefinito per le librerie Xcode (che potresti dover aggiungere ad eclissi? Non eseguo OS X quindi non posso dire quale sia l'installazione di Xcode è, ma sembra che potrebbe essere in/Developer, o/Library/Developer/Shared).
Ho scritto un articolo su come impostare Eclipse di sviluppare OpenGL (e GLUT) le applicazioni in C/C++ e Java sia di Windows e Mac OS X se sei interessato. Contiene tutti i passaggi e tutto ciò che è necessario sapere per avere il sistema pronto.
Lo si può trovare qui:
Setup Eclipse to develop OpenGL & GLUT apps in Java & C/C++ on Windows & MAC OS X!
- 1. GLUT su OS X con OpenGL 3.2 Core Profile
- 2. Compilare OpenGL e GLUT OSX
- 3. testo semplice in OpenGL (senza GLUT)
- 4. Compilazione di OpenGL SOIL su Mac OS X
- 5. Eclipse - come usare Mac OS X (Xcode) toolchain in Eclipse?
- 6. Centra una finestra OpenGL con GLUT
- 7. Lettura pixel da OpenGL/GLUT Applicazione
- 8. Algoritmo OpenGL/GLUT di riempimento riga di scansione in C++
- 9. Eclipse Juno digitazione lag su OS X Lion
- 10. sem_init su OS X
- 11. Menu Eclipse disabilitati su OS X 10.9 Beta 6
- 12. Impossibile avviare Eclipse RCP Application su OS X
- 13. Intellij-idea: Utilizzo Eclipse Keymap su Mac OS X
- 14. Mono e WInform su OS X
- 15. CLSQL e MYSQL su OS X
- 16. pygettext.py e msgfmt.py su Mac OS X
- 17. RVM, FSEvents e CarbonCore su OS X
- 18. Come trovo il menu "Preferenze" in Eclipse in OS X?
- 19. FreeGLUT su Mac OS X Lion
- 20. HsOpenSSL segfaults su OS X
- 21. JNotify su Mac OS X?
- 22. PyCharm - $ PATH su OS X
- 23. xlocale rotto su OS X?
- 24. emacs su OS X 10.6
- 25. Installa pip su OS X
- 26. Mouse multipli su OS X
- 27. Come disegno un testo con GLUT/OpenGL in C++?
- 28. Nessun dispositivo Java su Mac OS X
- 29. OpenGL debugger/error tracer per OS X 10.7 (Lion)?
- 30. Supporto retina in Qt5 su OS X
Questa risposta mi ha portato alla soluzione che stavo cercando. Ora ho tutto configurato correttamente. L'unico cambiamento che ho dovuto fare con il pezzo di codice fornito è stato quello di modificare l'istruzione include in #include come da risposta di Brian. –
fastrack20