2011-10-24 19 views
11

Mac'te OpenGL (Lion) için merhaba bir dünya yazmaya çalışıyorum. Bazı related post veya youtube tutorial buldum, ancak bunların çoğu XCode gerektirir. Ben XCode ile tamam, ama terminal altında derleme, çalıştırmak ve çalıştırmak altında bir .cpp dosyası yazmak gibi, sadece merhaba bir dünya yazmak için bazı basit yaklaşımlar gerektiğini düşündüm. (tabiki önceden gerekliyse kütüphaneleri kurun)OpenGL XCode olmadan Mac'te Merhaba Dünya

Herhangi bir fikir veya öneriniz var mı?

cevap

17

OSX kullanıyorsanız, XCode'u kullanmanız önerilir ve NSOpenGLView kullanın. This kitabında kullanabileceğiniz çeşitli API'lerle ilgili birçok malzeme var. GLUT, kesinlikle kavramak ve kurmak için en hızlıdır. ile derlemek sonra

#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; 

} 

ve: Eğer terminalde GLUT kullanımını ve derlemek istiyorsanız

Bunu deneyebilirsiniz hile yapmak gerekir

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

. Bununla birlikte XCode ile çalışmayı denemeyin ve mücadele etmeyin, size zaman ve hayal kırıklığı kazandırır.

+0

Terminalde yönteminizi denedim ama şunu elde ettim: merhaba.c: 47: 21: hata: GL/glut.h: Böyle bir dosya veya dizin yok – clwen

+0

hmmm, 10.6 (kar leopar) çalışıyorum ve işe yarıyor. Sisteminizde GLUT var olduğunu doğrulayabilir misiniz? XCode ve Apple'ın geliştirici araçlarını yüklediniz mi? – whg

+0

"GL/glut.h" ile "GLUT/glut.h" arasındaki ekleme yolunu değiştirdikten sonra çalışır. Çok teşekkürler! – clwen

0

GLUT kullanmayı ve küçük bir C++ programı yazmayı deneyin. Gerekli kütüphaneleri kurmak için macports gibi bir şey kullanabilirsiniz.

-1

OpenGL'deki herhangi bir kitabın örnek/öğretici kodunu çevrimiçi arayın. Hepsi GLUT (başka bir poster tarafından belirtildiği gibi) gerektiren çok basit programlarla başlar ve genellikle bunların nasıl oluşturulacağına dair talimatları vardır. Bu yüzden sadece bu basit programlardan birini indirin ve kaldırın ve çalıştırın.

5

Bu biraz eski ama cevaplayacağım çünkü nasıl yapılacağını öğrendim. İlk olarak yukarıdaki örnek kodda iki hata vardır, düzeltmeleri kolaydır. OS X 10.8'de clang kullanarak bu işler. Yukarıdaki kod derlenmelidir. Ana fonksiyonun imzası yanlış olsa da.

yanlış glutInit yapar
<int main(int argc, char *argv) 
>int main(int argc, char **argv) 

,

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

çıktı berbat, ama bir pencere yapar ve clang çerçevelerin nasıl kullanılacağı gösterilmektedir. Başlangıç ​​dosyası için teşekkürler.

+0

Ivan'ın düzeltmesi benim için çalıştı (OSX Mavericks). https://gist.github.com/omenking/35b920a1d2cbf99fc6f2 a.out dosyasını çalıştırmak için komut satırında /a.out koyun. –