#opengl #osx-snow-leopard #x11
#opengl #osx-snow-leopard #x11
Вопрос:
Я унаследовал старую кодовую базу, использующую OpenGL внутри X11. Заголовок includes выглядит следующим образом
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <X11/Intrinsic.h>
#include <GL/glx.h>
#include <GL/gl.h>
#include <X11/cursorfont.h>
Я хочу портировать это на Snow Leopard, моя основная проблема пока заключается в том, что я не могу получить правильные заголовки или, может быть, мне следует сказать, что я не могу заставить xcode привязываться к правильным заголовкам.
Мне нужно использовать такие вещи, как
GLXDrawable drawable;
XVisualInfo *ptr;
GLXContext MainContext;
XSetWindowAttributes wa;
Я пытался установить X11 dev (я пытался http://xquartz.macosforge.org/trac/wiki Я попытался использовать fink для установки библиотек разработки x11 opengl и …). Очевидно, что я не программист на C (хотя у меня довольно хороший опыт в разработке Objective c и iOS).
Буду признателен за любую помощь.
Ответ №1:
Сервер X11 для macOS X довольно ограничен и, по моему опыту, имеет довольно плохую поддержку OpenGL. Поэтому вместо того, чтобы пытаться вставить квадратную свинью в круглое отверстие, я бы просто использовал собственный OpenGL API для macOS X. Вероятно, самый простой способ сделать вашу вещь переносимой — это заменить все, что связано с окнами, на GLFW, аккуратную оболочку, специфичную для OpenGL, для X11 / GLX, Win32 и macOS X, которая заботится о создании контекста OpenGL и пользовательском вводе. Кстати, пользовательский ввод: вам тоже придется его настроить.
Не поймите меня неправильно, мне действительно нравится X11 / GLX. И если бы у меня не было такого неудачного опыта с поддержкой OpenGL сервером macOS X (Leopard) X11, я бы с радостью дал совет, как с этим справиться. Но я думаю, что в конце концов вы сохраните свое здравомыслие, если просто замените этот код X11 на GLFW.
Комментарии:
1. Спасибо, если я собираюсь переписать много кода (учитывая, что этот код не предназначен для переносимости и должен выполняться только на менее чем 10 компьютерах Mac), почему вы рекомендуете GLFW вместо использования собственных решений? Еще одна проблема, которую я еще не затронул, — это OpenMotif, у меня довольно сложный пользовательский интерфейс, созданный с использованием OpenMotif, с которым я не знаю, что делать, я бы лучше не менял его, если это возможно, и просто портировал его на данный момент.
2. Конечно, вы могли бы использовать и собственный API. NSOpenGLView на самом деле довольно прост в использовании. OpenMotif, ну, Motif на самом деле не соответствует ожиданиям от современных пользовательских интерфейсов. Кроме того, пользователи Mac ожидают, что их приложения будут соответствовать внешнему виду Cocoa. И давайте посмотрим правде в глаза, X11 не является родным для macOS X.