Сообщается, что Valve обнаружила, что OpenGL быстрее, чем DirectX, но реальный вывод немного сложнее.
Valve хорошо известна своей быстрой графикой на базе ПК, и если кто-то что-то знает о DirectX, вы ожидаете, что это будет Valve. Однако недавнее сообщение в блоге предполагает, что даже при всех этих знаниях было невозможно заставить DirectX работать так же быстро, как порт OpenGL.
Это выглядит запредельно для DirectX, особенно когда порт для OpenGL даже работает быстрее под Windows — т. Е. OpenGL под Windows быстрее, чем DirectX.
Игра Left4Dead 2 была портирована на 32-разрядную версию Linux, и первоначально она достигла 6 кадров в секунду, что вполне разумно для прямого порта программы, оптимизированной для работы под управлением Windows/DirectX. Установка была:
Оборудование
Intel Core i7 3930k
NVIDIA GeForce GTX 680
32 ГБ ОПЕРАТИВНОЙ ПАМЯТИ
Программное обеспечение
64-разрядный пакет обновления 1 для Windows 7
Осталось 4 Мертвых 2
Ubuntu 12.04 32-разрядная версия
После трех уровней оптимизации:
Изменение игры для лучшей работы с ядром
Изменение игры для лучшей работы с OpenGL
Оптимизация графического драйвера
частота кадров снималась до 315 кадров в секунду. Это следует сравнить с оптимизированной частотой кадров Windows/DirectX 270,6 кадров в секунду. Улучшения графического драйвера также привели к тому, что версия Windows OpenGL работает со скоростью 303 кадра в секунду, которая по-прежнему превосходит версию DirectX.
Это действительно кажется далеким от того, что вы могли бы ожидать, учитывая время, уже затраченное на то, чтобы запустить версию DirectX как можно быстрее. Однако, чтобы процитировать из блога Valve:
Этот опыт приводит к вопросу: почему версия OpenGL нашей игры работает быстрее, чем Direct3D в Windows 7? Похоже, что это не связано с накладными расходами на многозадачность. Мы провели довольно тщательный анализ, и он сводится к нескольким дополнительным затратам микросекунд на пакет в Direct3D, которые не влияют на OpenGL в Windows. Теперь, когда мы знаем, что аппаратное обеспечение способно обеспечить большую производительность, мы вернемся и выясним, как смягчить этот эффект в Direct3D.
Таким образом, проблема с Direct3D заключается не в чем-то глубоком и структурном, а в небольших накладных расходах на каждую графическую операцию, которые складываются. Как говорится в блоге Valve, учитывая, что проблема теперь выявлена, возможно, есть что-то, что можно сделать, чтобы ускорить работу DirectX быстрее.
Это не так ужасно, как предполагают некоторые новостные репортажи. Он был использован в качестве доказательства того, что DirectX в некотором роде глубоко ошибочен. Конечно, это может быть, но на основе того, что было представлено, кажется, что DirectX немного (около 15%) хуже, чем OpenGL. Кроме того, была проделана большая работа по улучшению драйверов Linux OpenGL, и неясно, насколько это способствовало ускорению.
В результате вы можете сказать, что OpenGL — это высокопроизводительная графическая платформа, если у вас установлены правильные драйверы.