Компания Apple обновила документацию для разработчиков. Раздел «Что нового?» посвящён ключевым изменениям в macOS 10.14: это тёмная цветовая схема Dark Mode... обновлённый Mac App Store с новыми программными интерфейсами для рейтингов и обзоров...
Новые нескучные обои и прочие ключевые изменения в новой оси. Ну что ж, совершенство не нуждается в доработке. Однако...
Цитата:
Но самое интересное спрятано в подвале, а именно в разделе «Устаревшие и удалённые API» (Deprecations and Removed APIs). Там упоминается об отказе от «устаревших» технологий OpenGL и OpenCL. Этим технологиям вручается «чёрная метка», то есть Apple настоятельно не рекомендует использовать OpenGL и OpenCL в разработке новых продуктов.
Вот такое мелкое и незначительное изменение, fine print, ну подумаешь, отказываемся от OpenGL, на нём же ровно полторы игры да и те под макосью не запускаются. Такая у них логика?
Цитата:
Разработчиков предупреждают, что устаревшие API могут быть полностью удалены из будущей версии операционной системы.
Разработчиков предупреждают, что в следующей версии операционной системы диаметр анального зонда будет удвоен, просьба начать разрабатывать очко заранее.
Цитата:
Как минимум, новый код ни в коему случае не должен использовать OpenGL и OpenCL. И если эти интерфейсы использует какой-то старый код, то его нужно заменить максимально быстро.
Понял? Вонючка.
А что же взамен? А взамен - очередное никому не интересное апи - Metal.
Цитата:
Metal — разработанные с нуля новые программные интерфейсы, лишённые обратной совместимости. По заявлению Apple, они обеспечивают лучший доступ к современным графическим процессорам на iOS, macOS, а также устройствам tvOS: «Metal позволяет избежать накладных расходов, присущих устаревшим технологиям и представляет новейшие функции обработки графики. Единая поддержка графики и вычислений в Metal позволяет приложениям эффективно использовать новейшие технологии визуализации.
Какие-такие функции предоставляет Metal, которые нам не предоставляют расширения OpenGL?
Ну разумеется, никакие! Таких функций не существует и существовать не может.
Единственная функция, которая там может быть (и почти наверняка есть!) - отсутствие искусственных замедлений и увеличения энергопотребления, которые будут в драйверах OpenGL. Все же помнят прошлогодний скандал?
Цитата:
Комментаторы также напоминают, что из-за безалаберной поддержки OpenGL недавно пришлось закрыть проект Elite Dangerous под Mac.
Из-за безалаберной поддержки OpenGL в рендере волатилы появились мак-специфичные GPU-Hacks. Но проект закрывать не пришлось, пока всё отлично воркает. Пока.
Цитата:
С другой стороны, сегодня большинство игр создаётся на Unity3D, Unreal Engine и других движках, которые поддерживают Metal. Ну а кто вложил время и деньги в разработку под OpenGL/OpenCL — тот сам виноват.
Поняли, дурачки? Вы сами виноваты.
Риторический вопрос: учитывая количество игроков под маком, не проще ли вложиться в разработку под очередной DirectX?
Теперь самое главное. Когда возникает человеческое горе, как-то необходимость всё-всё переписать, всегда появляются ушлые дельцы, которые охотно помогут вам решить ваши проблемы за скромный прайс. Встречайте - проект Molten, автоматическая миграция OpenGL-вызовов в Metal. Вы думаете, его делали энтузиасты, подобные мне с моим QIndieGL? Ха-ха-ха.
Это платный продукт, и лицензия для инди-нищебродов стоит какие-то ЧЕТЫРЕСТА ДОЛЛАРОВ США.
Есть и корпорейт-версия за 20 тысяч долларов.
Справедливости ради скажем, что у них есть бесплатный и опенсорсный проект MoltenVK, который транслирует Vulkan в Metal. То есть если вы уже вложились в одно говно, то так и быть, транслятор в другое говно предоставим бесплатно. А вот любителям качественных и десятилетями отработанных апи придётся раскошелиться.
Вот такие идеи продвигает в мир компания Apple.
Я, разумеется, далёк от мысли, что софт должен быть свободным, опенсорсным, бесплатным, общедоступным и вообще - без вирусов. Это так будет при коммунизме, а у нас, как известно, капитализм. Но и искусственное принуждение пользованием сомнительными апи, которые затачиваются под строго определённые платформы, которые в свою очередь регулярно ломают совместимость сами с собой, это вершина наглости и цинизма. Неудивительно, что выросло поколение циничных людей, которое на этом фоне пытается урвать и себе кусок пирога, создавая, по-большому счёту, совершенно не нужные человечеству вещи и ставя на них дикие, необоснованные ценники. А разработчики вынуждены молча терпеть и заранее разрабатывать там себе всякое.
nemyax
Если завтра Apple откажется от английского языка на своих устройствах в пользу китайского, я не удивлюсь, если миллионы фанатов яблока с гиканьем побегут его учить. И, разумеется, тут же появятся "неофициальные" переводчики обратно на английский, всего за какие-то $499.99 в месяц.
А разработчикам доверительно сообщат, что ежели у них нет поддержки юникода для иероглифов, то они сами дураки, т.к. только китайский язык позволяет в полной мере раскрыть мощь техники и софта от Apple, предоставляет новейшие функции коммуникации, и глупо цепляться за устаревшие языки, место которым - на нищебродских устройствах под управлением скучных и банальных виндов и линуксов.
Только-только на горизонте замелькал Vulkan API, который мог бы стать по настоящему кросс-платформенным (Windows, Android, Linux, iOS, macOS, игровые консоли), как тут же Apple решила объявить его устаревшим и завязать iOS и macOS на никому не нужный собственный Metal. Что же, посмотрим, как сильно это убьет рынок игр для macOS, который в последнее время стал слабее даже Linux'ового.
Все эти устаревания API и различных инструментов с их последующим удалением -- бич современной компьютерной индустрии. Ведь похожие ситуации происходят в том же Windows или Android. В последнем вообще невозможно завязаться на что-либо. Сначала несколько лет для сборки apk-пакетов использовался ant вкупе с Android Makefiles (ndk-build), потом пришли хипстеры из JetBrains и начали всё ломать. Сломали Eclipse ADT так что он просто перестал работать. Я до сих пор считаю, что это политическое решение, чтобы согнать Android-разработчиков с Eclipse на их новую IDE. Далее они взяли и сломали ant и заменили на хипстерский Gradle, в котором ты должен описывать сборку текстом, вместо GUI-конфигураторов, как раньше. Фактически шаг назад. Потом они начали кошмарить Android NDK, удаляя из него архитектуры и платформы. Ну и под конец объявили ndk-build устаревшим, с рекомендацией переходить на CMake, поддержка которого была явно запилена на скорую руку. И так сойдёт:
Теперь я понимаю, почему люди делают собственные сборочные системы и не погружаются в это море абсурда.
EXL писал: замелькал Vulkan API, который мог бы стать по настоящему кросс-платформенным
Мы в соседней теме обсуждали, что сейчас идёт тенденция на упрощение. Котлины всякие, свифты. Вулкан на фоне OpenGL - невероятно сложный монстр, это его и сгубило, кмк. Но вот OpenGL(ES) - вполне себе настоящий кросс-платформенный, и довольно простой апи.
Может, там какие-то внутренние тёрки в консорциуме, о дележе бабла не смогли договориться? Microsoft тоже в своё время покинула ARB и объявила об отказе от OpenGL, но к счастью, производители драйверов по-прежнему его поддерживают, поэтому с запуском даже старых OpenGL-игрушек под виндой пока особых проблем нет.
Помойка перенесена в движок. Теперь там тонны кода под десятки разных апи, всё это причудливо переплетено и освящено святейшим Патриархом (а иначе оно просто не заработает).
Есть у нас расширение для браузера. Оно было написано для Chrome, FF, Safari. Специфичного кода для каждого из браузеров было пятьдесят строк. Главный геморрой был с FF и их особым форматом дополнений/плагинов. Потом они одумались и перевели все на Webextensions api. По сути это было такое же api как и в Chrome и Safari.
Но пришел 2018 год, Apple сказала что Web Extensions Api deprecated, качайте xCode(в appstore имеет оценку 2.4 и вес в десяток ГБ) и пишите все на Swift.
Приехали. По осени придется переписывать скорее всего
А ещё мне очень нравится из политика обновлений. У нас обновления для всех браузеров выходят два раза в неделю. У Apple процесс публикации занимает от одного до трёх месяцев, чаще три. А в суппорт пишут нам , какие мы редиски. "Вон у Машки на ее ленове все работает, а на моем макбукпро2019 нет, чините!!!11".
Судя по треду, у Apple политика такая, чтобы было невыгодно разрабатывать за пределами их инфраструктуры.
Почему нельзя было просто вывести низкоуровневые функции из самого GL. Для чего понадобилось изобретать новый несовместимый API. С металом аналогично. До этого был еще мантл, он тоже не взлетел.
Вообще всё равно на проблемы маководов. Когда у них не станет libOpenGL.dylib, тогда можно будет забеспокоиться, напрячься и написать пост о том, что порт рендерера на новое API нерентабелен, а значит разработка макось версии игры/движка прекращается.
a1batross писал: Вообще всё равно на проблемы маководов
Это потому что ты сам не маковод (молодой ищо).
А меня вот совершенно не радует перспектива, что мой собственный движок не будет запускаться на моём же собственном рабочем ноуте.
Вот тогда, похоже, действительно придётся ставить на макбук линукс или винду (FFFFFUUUUU~)