У меня есть общая кодовая база OpenGL, которая работает на iOS и Windows.Есть небольшие разделы, ничего большого, вроде этого:
// Page flip
#ifdef WIN32
glFlush();
#else
const GLenum discards[] = {GL_COLOR_ATTACHMENT0};
glDiscardFramebufferEXT(GL_FRAMEBUFFER, 1, discards);
[context presentRenderbuffer:GL_RENDERBUFFER];
#endif
Помимо запуска GL (не использующего для этого фреймворка), обработчиков событий пользовательского ввода ОС и шейдеров, движок работает одинаково на обеих платформах.Я также использовал ifdefs в заголовочных файлах, чтобы не дать Objective C «заразить» остальную часть кодовой базы, поэтому чистые файлы C ++ не будут видеть членов класса с такими типами, как «id» или «EAGLContext».