OpenGL Hello World на Mac без XCode - PullRequest
       3

OpenGL Hello World на Mac без XCode

11 голосов
/ 24 октября 2011

Я пытаюсь написать привет мир для OpenGL на Mac (Lion). Я нашел связанный пост или учебник YouTube , но для большинства из них требуется XCode. Я в порядке с XCode, но я подумал, что должны быть некоторые более простые подходы, чтобы написать просто привет мир, похожий на запись .cpp файла в vim в терминале, скомпилировать и запустить. (конечно, если необходимо, установите библиотеки заранее)

Любая идея или предложение?

Ответы [ 4 ]

17 голосов
/ 25 октября 2011

Если вы используете OSX, я настоятельно рекомендую использовать XCode и использовать NSOpenGLView. В этой книге много материала, касающегося нескольких API, которые вы можете использовать.GLUT определенно является самым быстрым, чтобы разобраться и настроить.

Если вы хотите использовать GLUT и компилировать на терминале, вы можете попробовать это:

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

}

, а затем скомпилироватьс:

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

Это должно сработать.Я бы сказал, что не пытайтесь бороться с работой XCode с ним, это сэкономит ваше время и разочарование.

5 голосов
/ 13 февраля 2013

Это немного старо, но я отвечу, потому что я только что узнал, как это сделать. Во-первых, в приведенном выше примере кода есть две ошибки, которые легко исправить. На OS X 10.8 с использованием clang это работает.

clang++ -framework glut -framework opengl hello.cpp

Приведенный выше код должен скомпилироваться. Подпись главной функции неверна.

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

Что делает glutInit неправильным,

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

Вывод - отстой, но он создает окно и показывает, как использовать фреймворки с clang. Спасибо за стартовый файл.

0 голосов
/ 24 октября 2011

Посмотрите в Интернете пример / учебный код любой книги по OpenGL. Все они начинаются с очень простых программ, которые требуют максимум GLUT (как упомянуто другим автором), и, как правило, имеют инструкции по их созданию. Так что просто скачайте одну из этих простых программ и запустите ее.

0 голосов
/ 24 октября 2011

Попробуйте использовать GLUT и написать небольшую программу на C ++. Вы можете использовать что-то вроде macports для установки необходимых библиотек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...