OpenGL Hello World на Mac без XCode

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

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

Ответ 1

Если вы используете 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 с ним, это сэкономит вам время и разочарование.

Ответ 2

Это немного устарело, но я отвечу на него, потому что я только что научился этому. Сначала в приведенном выше примере есть две ошибки, их легко исправить. В 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. Спасибо за файл стартера.

Ответ 3

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

Ответ 4

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