Изменить: На этот вопрос был дан косвенный ответ в комментариях (используя GLUT, чтобы избежать необходимости в любом из них), но так как он не опубликован в качестве ответа, я не могу «принять» его, хотя моя проблема решена.
У меня есть кроссплатформенное приложение OpenGL, написанное на C ++, которое (в Mac OS X) использует Carbon для создания окон и прокачки сообщений (Think … NeHe Lesson 1). Недавние изменения в моем коде с использованием функций C ++ 11 сделали его несовместимым с GCC, который поставляется в комплекте с XCode.
Все мои попытки использовать такие системы, как MacPorts, HomeBrew и т. Д … потерпели неудачу по разным причинам (в основном из-за моей необходимости компилировать 32-битную версию для поддержки Carbon). Первоначально я собирался спросить, есть ли у кого-нибудь лучшее решение для установки обновленного G ++ в Mac OS X 10.8.
Это похоже на недальновидное решение (в какой-то момент мне нужно будет перейти на Какао и 64-битную версию), поэтому мой вопрос эволюционировал до вопроса о том, какой самый простой способ заставить мое существующее (очень большое) приложение использовать Какао для этой задачи а не карбон?
У меня есть весь «Углеродный код» в отдельном файле .cpp / .h, который имеет только две функции: одну для создания окна OpenGL, а другую — насос сообщений, который использует ReceiveNextEvent.
Редактировать:
Чтобы быть более ясным, я ищу лучший способ спроектировать (более или менее) замену моего существующего создания окна Carbon и функций накачки сообщений, но в Какао. Я понимаю, что, будучи другим API, использующим разные языковые концепции, простой замены одной на одну команды будет недостаточно. В моем существующем коде есть файл исходного кода для Mac, который имеет две функции, которые выполняют основные задачи (с Carbon), которые я называю, InitWindow и DoEvents. Они создают окно и циклически пересекают ожидающие события соответственно. Моя цель — заменить этот файл с исходным кодом тем, который использует Какао, предоставляя те же функции, так что практически ничего не изменится мой основной код.
Каков был бы лучший способ достичь моей цели? Я не знаком с Какао, и Obj-C мне чужд.
Переход на Cocoa 64-bit определенно звучит как отличная идея. И я рекомендую использовать некоторые родные интерфейсы, если вы хотите, чтобы ваши пользователи тоже были довольны.
Самое простое, что можно сделать, это создать NSWindow
с NSOpenGLView
в этом. Вы можете сделать это в Интерфейсном Разработчике или в коде. Вероятно, лучше всего сделать это, создав новое приложение Какао, используя шаблон XCode (Файл> Новый проект> Приложение какао). Это даст вам окно по умолчанию. Вы можете открыть его в Интерфейсном Разработчике и добавить NSOpenGLView
к этому. Вы можете сделать вид пользовательским подклассом NSOpenGLView
и добавьте к нему обработку вашего события. Смотрите документы для NSResponder
для получения дополнительной информации о том, как Какао отправляет события.
Других решений пока нет …