OpenGL и Parallels Desktop 13



    Каждый пользователь Parallels Desktop for Mac хочет, чтобы Windows-приложения работали как можно быстрее. На скорость Windows-приложений, исполняемых в виртуальной машине Parallels Desktop, влияет много факторов: мощность процессора, наличие SSD, запущенные приложения, Windows обновления, и многое другое. Под катом небольшой рассказ о том, почему «совы не те, кем они кажутся на самом деле» (с).

    Для тех Windows-приложений, что используют 3D-графику, надо учесть ещё два фактора: производительность видеокарты и используемые приложением графические Windows-библиотеки — DirectX или OpenGL.

    Многие Windows CAD/CAM-приложения и игры используют DirectX или OpenGL. Почти в каждом основном релизе Parallels Desktop мы стараемся улучшить поддержку этих библиотек. В этой статье я расскажу об OpenGL.

    OpenGL


    «Open Graphics Library (OpenGL) — не зависящий от языка кроссплатформенный программный интерфейс приложения (API) для отрисовки 2D и 3D векторной графики. Обычно используется для взаимодействия с видеокартой для аппаратного ускорения отрисовки».

    OpenGL «широко используется в системах автоматизированного проектирования (CAD), виртуальной реальности, научных и информационных визуализациях, полётных симуляторах и видеоиграх».

    К примеру, OpenGL используют Windows-приложения Adobe After Effects, Adobe Photoshop, Adobe Premiere Pro, Autodesk AutoCAD, Google SketchUp и несметное количество игр.

    Возлагая надежды


    Хотел бы я сказать вам, что Parallels Desktop волшебным образом превращает ваш четырёхлетний MacBook Air в мощную игровую PC-машину с видеокартой с водяным охлаждением за $3000, но это не так.

    Parallels Desktop может позволить вашему Mac запустить большинство Windows-приложений, какие-то игры и какие-то CAD/CAM-приложения.

    Истории успеха


    Благодаря труду инженеров, в Parallels Desktop 12 и 13 стали работать некоторые Windows-приложения, использующие OpenGL 3.2. Примеры OpenGL-приложений, хорошо работающих в Parallels Desktop 13 представлены ниже.

    DIALux evo — Стандарт де-факто в индустрии профессионального проектирования освещения.



    Wolfenstein: The Old Blood — шутер разработки Bethesda Softworks. Это сокращённая запись игровой сессии в Parallels Desktop 13 на Mac. Полная версия в разрешении 1920 x 1080, 1,06 Гб.



    Ещё несколько хорошо работающих OpenGL-приложений:

    • Rage (2011)
    • Wolfenstein: The New Order (2014)
    • Бенчмарки Unigine Heaven и Valley
    • Minecraft
    • CATIA
    • Solidworks
    • Northgard
    • Rhinoceros 5
    • Navisworks 2017
    • ARCHICAD 20
    • Solid Edge
    • Серия игр Quake (Quake, Quake II, Enemy Territory: Quake Wars и другие.).



    Версии OpenGL


    У OpenGL более сложное версионирование, чем у большинства других приложений. Например, если приложению нужен OpenGL 3, а операционная система поддерживает OpenGL 4, то логично предположить, что приложение будет работать просто замечательно. Но не всё так просто.

    Кроме того, вы могли заметить, что MacOS поддерживает OpenGL 4.1, а Parallels Desktop 13 — только OpenGL 3.2. Почему же Parallels не поддерживает OpenGL 4.1 в Windows? Чтобы ещё больше всех запутать, скажу, что даже некоторые OpenGL 3.x Windows-приложения не работают в Parallels Desktop 13.

    Почему? В OpenGL 3.0 многие функции из OpenGL 2 и более ранних версий были помечены как не рекомендуемые, и окончательно удалены в OpenGL 3.1. В то время в OpenGL появилось дополнительная система версий под названием «Основной профиль / Профиль совместимости» (Core profile / Compatibility profile). В основном профиле не рекомендуемые функции недоступны, в профиле совместимости они работают. В целом, производители видеокарт в драйверах под Windows поддерживают профиль совместимости, чтобы могли работать более старые приложения. А вот Apple в MacOS поддерживает только основной профиль.

    Представьте разработчика, создавшего Windows-приложение, которое использует OpenGL 2.1. Разработчик хочет использовать новые функции из OpenGL 3.x. Но теперь он вынужден переписать кучу старого кода, чтобы не использовать функции, которые больше недоступны. Этим никто не хочет заниматься. И вот решение — профиль совместимости.

    Если вы с нуля создаёте новое приложение или движок, то можете начать и с основного профиля. А если улучшаете старый продукт, то лучше выбрать профиль совместимости. Поэтому почти все OpenGL-приложения под Windows используют этот профиль.

    Виртуализированная графика Parallels для работы с видеокартой на MacOS использует OpenGL. Виртуальная машина преобразует Windows-вызовы API в MacOS-вызовы (описание упрощённое, на самом деле всё сложнее). Поскольку не рекомендуемые функции OpenGL 3.x не доступны в MacOS, Parallels просто некуда их транслировать. Поэтому Parallels Desktop использует основной профиль.



    Сегодня Parallels поддерживает OpenGL 3.2 Core Profile, а для некоторых (очень консервативных) приложений может переключаться на OpenGL 3.2 Compatibility Profile.

    Прогнозирование производительности OpenGL-приложений


    К сожалению, не так-то просто предсказать, будет ли конкретное Windows OpenGL-приложение хорошо работать в Parallels Desktop. Если у вас уже есть наш продукт, попробуйте самостоятельно.

    Если вы ещё не приобретали Parallels Desktop, то можете поставить пробную версию, с ним можно попробовать Windows бесплатно. И тоже запустите интересующие приложения или игры и посмотрите, достаточно ли производительности. Если достаточно, прекрасно! Можете купить Parallels Desktop и Windows. Если же приложения будут работать медленно, то вы не потратите деньги зря.

    Также можете поучаствовать в теме на форуме, там люди пишут пакости про OpenGL-приложения, которые хотят использовать в Parallels Desktop.
    Parallels
    113.14
    Мировой лидер на рынке межплатформенных решений
    Share post

    Comments 10

      +2
      Немного не об OpenGL, но всё же — а почему у вас Чёрная пятница работает для всех стран, кроме России? Для всех есть скидка в 20% кроме покупателей в рублях.
      0
      А вот Apple в MacOS поддерживает только основной профиль.


      У Вас мягко говоря не совсем точная информация:

            // Set up OpenGL options.
            // Legacy code
            glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 1);
            glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
      
            // Indicate we only want the newest core profile, rather than using backwards compatible and deprecated features.
            glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_ANY_PROFILE);
      
            // Let's draw old-school polygon:
        
            glBegin(GL_POLYGON);
            glVertex2f(0.0, 0.0);
            glVertex2f(0.0, 0.3);
            glVertex2f(0.4, 0.3);
            glVertex2f(0.6, 0.15);
            glVertex2f(0.4, 0.0);
            glEnd();
      


        0
        Как я понимаю, запрашивается контекст OpenGL 1.0 или выше, в MacOS это будет 2.1, а в Windows будет, например, 3.0. OpenGL 2.1 с MacOS то не убрали.

        Замените
        glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 1);
        на
        glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
        и запустите.
        0

        Товарищи разработчики так почему


        VMWare Fusion 10 имеет полную поддержку OpenGL 3.2 ?


        Может отдебажите их код и поймёте как это сделано ?

          0
          Привет!
          Непонятно почему вы решили, VMWare Fusion 10 имеет полную поддержку OpenGL 3.2. И что Вы выкладываете в отделение «полная»? Фьюжн поддерживает 3.2 Core profile. И мы *тоже* его поддерживаем. Практически все программы для Windows пользуются Compatibility profile-ом просто потому, что в виндах он всегда есть. Фьюжен *не* поддерживает 3.2 Compatibility profile, и мы догадываемся почему. (Да потому что макось его не поддерживает!). Мы поддерживаем 3.2 Compatibility для *некоторых* приложений.
              0
              Разбирали эту ситуацию. Проблема там была не столько с самим OpenGL 3.x, сколько с тем как этот VTK OpenGL инициализирует. Это было исправлено и VTK 7.1 должен работать в Parallels Desktop 13.2. Попутно выяснилось, что VTK 8.x у нас (и скорее всего во фюжене тоже, но это не проверялось) работать действительно не будет. И причина ровно в том, что виндовые программы тупо уверены в наличии на виндах Compatibility profile-а. Т.е. программы (включая VTK 8) используют функциональность не проверяя ее наличия. А текст сообщения об ошибке – на совести его написавших.

              Что касается вывода о «полной» или «не полной» поддержке OpenGL любой версии на основании единственной программы, то это выглядит несколько опрометчиво и не только в отношении OpenGL. Мы таки знаем, что в реализации OpenGL 3.x у нас много пробелов по сравнению с виндой, и тому есть причины (о чем и был пост), и мы над этим работаем. Но это не значит что OpenGL 3.2 у нас нет совсем. В любом случае, чтобы иметь какие-то гарантии любое (и каждое) приложение нужно проверять в ВМ. Обобщать не стоит, потому что тогда на основании того, что во фьюжен не работает Wolfenstein: The Old Blood надо будет сделать вывод, что у них OpenGL 3.2 нет совсем.
                +1
                Большое спасибо Именно поэтому я каждый год покупаю у вас новую версию!

        Only users with full accounts can post comments. Log in, please.