C ++ код с OpenGL на OSX с использованием CGL / NSOpenGL без XCode? - PullRequest
3 голосов
/ 16 марта 2012

Я хочу использовать CGL или NSOpenGL для создания окна OpenGL без использования XCode (скомпилировать с помощью командной строки gcc).Я разрабатываю что-то кроссплатформенное, и я бы хотел свести к минимуму расхождение кода, если смогу!Моя кодовая база полностью C ++ на данный момент.Это вообще возможно?Я новичок в OSX, и я не коснулся цели C. Я просмотрел документы для разработчиков и взял несколько примеров файлов.Все они используют xcode.Я успешно скомпилировал исходный код и связал его с нужной платформой, но весь пакет приложений, xib и info.plist кажется немного непосильным.

Ответы [ 5 ]

5 голосов
/ 09 марта 2013

Это голые кости, которые можно получить:

// g++ glInfo.cpp -o glInfo.x -framework OpenGL 

#include <OpenGL/OpenGL.h>
#include <OpenGL/gl3.h>
#include <stdio.h>

int main(int argc, char **argv) 
{ 
    CGLContextObj     ctx; 
    CGLPixelFormatObj pix; 
    GLint             npix; 
    CGLPixelFormatAttribute attribs[] = { 
        (CGLPixelFormatAttribute) 0
    }; 

    CGLChoosePixelFormat( attribs, &pix, &npix ); 
    CGLCreateContext( pix, NULL, &ctx ); 
    CGLSetCurrentContext( ctx ); 

    printf("Vendor:   %s\n", glGetString(GL_VENDOR)                  ); 
    printf("Renderer: %s\n", glGetString(GL_RENDERER)                ); 
    printf("Version:  %s\n", glGetString(GL_VERSION)                 ); 
    printf("GLSL:     %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION)); 

   return 0; 
}
2 голосов
/ 16 марта 2012

У обоих fltk и SDL должно быть достаточно кода AGL / CGL. Я создал и запускаю приложения cmdline GL на OS X с помощью fltk-1.3.0. Однако она использует подсистему AGL, которая устарела. SDL использует CGL и NSOpenGL для своего кварцевого видео слоя: ./src/video/quartz

Используйте флаги obj-c для компилятора, если вам нужно собрать src.m, и пусть родные g ++, llvm-g ++, clang ++ или что-то еще позаботятся о связывании. Возможно, вам придется добавить -framework CGL -framework OpenGL, а также ApplicationServices и Cocoa. Многое зависит от того, что вы подразумеваете под «расхождением кода».

0 голосов
/ 16 марта 2012

Для системы сборки я рекомендую CMake / CPack, который поможет вам поддерживать кроссплатформенность и создавать пакеты приложений. Для NSGL возможно использование Obj-C ++, но у меня нет никакого кода под рукой.

0 голосов
/ 16 марта 2012

Ну, вы можете сделать это "вручную" (я делал это во время NeXTStep), но это неприятно, прежде чем он работает в первый раз. XCode использует make-файлы под капотом. Вы можете найти и принять make-файлы в

  /Developer/Makefiles

(до XCode 4.3) или для XCode 4.3 в

 /Applications/Xcode.app/Contents/Developer/Makefiles

Удачи!

0 голосов
/ 16 марта 2012

Вы можете создавать приложения без использования XCode, но если вы хотите, чтобы пользователи, которые не являются системными администраторами, использовали их, вам понадобится комплект приложений (и, следовательно, .plist) и (если это не игра) пользовательский интерфейс за пределами что предлагает OpenGL. Вам не нужно создавать .xib для вашего интерфейса. Вы можете сделать все это программно, хотя для большинства случаев использование .xibs намного проще. Почему вы не хотите использовать инструменты, разработанные, чтобы помочь вам? Я не говорю, что они лучшие, но они бьют, используя только интерфейс командной строки. (Однако, если у вас есть проект Xcode для вашего приложения, вы можете создать его из командной строки и даже автоматизировать его сборку.)

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