Каждый пользователь 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. Если же приложения будут работать медленно, то вы не потратите деньги зря.
Также можете поучаствовать в теме на форуме, там люди пишут
Комментарии (5)
widgetii
26.11.2017 09:40А вот 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();
rogoz
27.11.2017 15:58Как я понимаю, запрашивается контекст 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);
и запустите.
OlegFX
Немного не об OpenGL, но всё же — а почему у вас Чёрная пятница работает для всех стран, кроме России? Для всех есть скидка в 20% кроме покупателей в рублях.
SmirkinDA
В России Parallels продаётся через AllSoft и у них тоже есть скидки в 20%: allsoft.ru/software/vendors/parallels
OlegFX
Спасибо, купил.