Как изменить метод рендеринга с opengl на directx в Windows 10

Обновлено: 21.11.2024

opengl info выводит информацию о реализации OpenGL®, используемой в настоящее время MATLAB®, такую ​​как версия, производитель и графические функции, которые она поддерживает. С помощью этой команды загружается OpenGL. Начиная с R2019a, этот синтаксис больше не рекомендуется. Дополнительные сведения см. в разделе История версий.

d = opengl('data') возвращает те же данные, что и информация opengl, но сохраняет их в структуре. Начиная с R2019a, этот синтаксис больше не рекомендуется.

Программное обеспечение opengl использует версию программного обеспечения OpenGL для рендеринга последующей графики для текущего сеанса работы с MATLAB. Эта команда работает только в системах Windows®.

Оборудование opengl использует версию OpenGL с аппаратным ускорением для рендеринга последующей графики. Если ваше графическое оборудование не поддерживает OpenGL с аппаратным ускорением, MATLAB вместо этого использует версию программного обеспечения.

opengl hardwarebasic использует версию OpenGL с аппаратным ускорением, но отключает некоторые расширенные графические функции, которые нестабильны с некоторыми графическими драйверами. Если ваше графическое оборудование не поддерживает OpenGL с аппаратным ускорением, MATLAB вместо этого использует версию программного обеспечения.

opengl('save', pref ) устанавливает ваши предпочтения, чтобы будущие сеансы MATLAB на этом компьютере использовали предпочтительную версию OpenGL. Укажите pref как «software», «hardware», «hardwarebasic» или «none». Эта команда не влияет на текущий сеанс.

Примеры

Отображение информации об OpenGL

Используя команду opengl info, отобразите информацию о реализации OpenGL, которая в настоящее время используется MATLAB. Например, отобразите производителя, версию и поддерживаемые графические функции. Также отобразите, использует ли MATLAB реализацию OpenGL с аппаратным ускорением или программную реализацию.

Определение графического оборудования

С помощью команды opengl info определите свое графическое оборудование, проверив поля Vendor и Renderer.

Примечание

Определение графического оборудования при использовании программного обеспечения OpenGL (Windows)

Закройте все рисунки, переключитесь на аппаратный OpenGL и выполните команду opengl info. Затем снова переключитесь на программное обеспечение OpenGL.

Определение графического оборудования при использовании программного обеспечения OpenGL (Linux)

Запустите MATLAB с флагом -nosoftwareopengl. Затем введите команду opengl info.

Использовать программное обеспечение OpenGL для текущего сеанса

Переключиться на использование программного обеспечения OpenGL для рендеринга графики в текущем сеансе.

Эта команда работает только в системах Windows.

Используйте программное обеспечение OpenGL для будущих сеансов

Настройте параметры так, чтобы MATLAB использовал программное обеспечение OpenGL для рендеринга графики во всех будущих сеансах. Эта команда не влияет на текущий сеанс.

Входные аргументы

info — Информация о реализации OpenGL
info

Информация о реализации OpenGL, которая в настоящее время используется MATLAB, заданная как info . Команда opengl info возвращает поля, перечисленные в этой таблице.

Описание средства визуализации OpenGL. Если вы используете OpenGL с аппаратным ускорением, в этом поле указывается название модели видеокарты.

Максимальный размер текстуры, поддерживаемый реализацией OpenGL.

Уровень поддержки оборудования, возвращенный как одно из следующих значений:

'full' — OpenGL с аппаратным ускорением (все графические функции включены)

'basic' — базовый OpenGL с аппаратным ускорением (некоторые графические функции отключены)

'none' — программное обеспечение OpenGL

Если MATLAB обнаруживает неподдерживаемый драйвер, это поле также содержит «известные проблемы с графическим драйвером».

Расширенные возможности, поддерживаемые реализацией OpenGL.

Максимальный размер буфера кадра, поддерживаемый реализацией OpenGL.

Дополнительную информацию о функциях сглаживания графики, прозрачности глубины и выравнивания центров вершин см. в разделе Расширенные графические функции.

программное обеспечение — Программное обеспечение OpenGL
программное обеспечение

Программное обеспечение OpenGL, указанное как программное обеспечение .

Чтобы переключиться на программное обеспечение OpenGL:

В системах Windows запустите программное обеспечение opengl .

В системах Linux® запустите MATLAB с флагом -softwareopengl.

Системы Macintosh не поддерживают программное обеспечение OpenGL.

Программный OpenGL может работать медленнее, чем OpenGL с аппаратным ускорением, и не поддерживает все графические функции. Таблицу поддерживаемых функций см. в разделе Расширенные графические функции.

аппаратное обеспечение — OpenGL с аппаратным ускорением
аппаратное обеспечение

OpenGL с аппаратным ускорением, указанный как hardware . Все системы поддерживают использование аппаратной команды opengl для переключения с базового оборудования на аппаратный OpenGL. Однако только системы Windows поддерживают использование аппаратной команды opengl для переключения с программного на аппаратный OpenGL. Чтобы переключиться с программного обеспечения на аппаратное в системах Linux, запустите MATLAB с флагом -nosoftwareopengl.

Если ваша система автоматически переключилась на использование программного OpenGL, то принуждение вашей системы к использованию аппаратного OpenGL может привести к нестабильности.

hardwarebasic — базовая версия OpenGL с аппаратным ускорением
hardwarebasic

Базовая версия OpenGL с аппаратным ускорением, указанная как hardwarebasic . Эта версия OpenGL с аппаратным ускорением использует ваше графическое оборудование, но отключает графические функции, которые нестабильны с некоторыми графическими драйверами. Отключенные функции могут измениться в будущих выпусках по мере изменения графических функций и развития графического оборудования. Таблицу отключенных функций см. в разделе Расширенные графические функции.

pref — предпочтительная версия OpenGL для будущих сессий
'software' | 'оборудование' | 'аппаратный базовый' | 'нет'

Предпочтение версии OpenGL для будущих сеансов в виде одного из следующих параметров:

'программное обеспечение' — Программное обеспечение OpenGL. Этот параметр недоступен в системах Macintosh.

'hardware' — OpenGL с аппаратным ускорением.

'hardwarebasic' — OpenGL с аппаратным ускорением и отключенными некоторыми дополнительными графическими функциями. Дополнительные сведения см. в разделе Дополнительные графические функции.

'none' — значение по умолчанию для вашей системы.

Подробнее

Расширенные графические функции

Расширенные графические функции — это функции, требующие определенных реализаций OpenGL. К этим функциям относятся сглаживание графики, прозрачность отслаивания по глубине, выравнивание центров вершин и маркеры с аппаратным ускорением. Поддержка этих функций зависит от:

Используете ли вы оборудование, базовое оборудование или программное обеспечение OpenGL. Чтобы определить, какую реализацию вы используете, проверьте поле HardwareSupportLevel, возвращаемое opengl info .

Версия реализации OpenGL. Чтобы определить используемую версию, проверьте поле Version, возвращаемое opengl info. Чтобы получить последнюю версию, доступную для вашего графического оборудования, обновите графические драйверы с веб-сайта производителя вашего компьютера. Дополнительные сведения об обновлении графических драйверов см. в разделе Системные требования для графики.

В этой таблице перечислены расширенные графические функции и условия, при которых они поддерживаются.

< /таблица>

Сглаживание графики

Сглаживание графики – это метод улучшения внешнего вида графиков за счет уменьшения появления зубчатых линий. По умолчанию эта функция включена, если ваша система ее поддерживает.

В этой таблице показана разница между включением и отключением функции. Чтобы отключить эту функцию для определенной фигуры, установите для свойства GraphicsSmoothing фигуры значение 'off' .

Графический интерфейс DirectX (DXGI) и несколько API Direct3D выполняют ту же роль, что и EGL. Этот раздел поможет вам понять DXGI и Direct3D 11 с точки зрения EGL.

DXGI и Direct3D, как и EGL, предоставляют методы для настройки графических ресурсов, получения контекста рендеринга для отрисовки ваших шейдеров и отображения результатов в окне. Однако DXGI и Direct3D имеют гораздо больше параметров и требуют больше усилий для правильной настройки при переносе из EGL.

Как сравнить DXGI и Direct3D?

Большое преимущество EGL по сравнению с DXGI и Direct3D заключается в том, что начать рисовать на поверхности окна относительно просто. Это связано с тем, что OpenGL ES 2.0 и, следовательно, EGL — это спецификация, реализованная несколькими поставщиками платформ, тогда как DXGI и Direct3D — это единая ссылка, которой должны соответствовать драйверы поставщиков оборудования. Это означает, что Microsoft должна реализовать набор API-интерфейсов, обеспечивающих максимально широкий набор функций поставщика, вместо того, чтобы сосредотачиваться на функциональном подмножестве, предлагаемом конкретным поставщиком, или путем объединения команд настройки конкретного поставщика в более простые API-интерфейсы. С другой стороны, Direct3D предоставляет единый набор API-интерфейсов, которые охватывают очень широкий спектр аппаратных графических платформ и уровней функций и обеспечивают большую гибкость для разработчиков, имеющих опыт работы с этой платформой.

Подобно EGL, DXGI и Direct3D предоставляют API для следующих действий:

  • Получение, чтение и запись в буфер кадров (называемый "цепочкой обмена" в DXGI).
  • Связывание буфера кадров с окном пользовательского интерфейса.
  • Получение и настройка контекстов рендеринга для рисования.
  • Выдача команд графическому конвейеру для определенного контекста рендеринга.
  • Создание ресурсов шейдера и управление ими, а также их связывание с содержимым рендеринга.
  • Визуализация в определенные цели рендеринга (например, текстуры).
  • Обновление поверхности отображения окна результатами рендеринга с использованием графических ресурсов.

Чтобы увидеть базовый процесс Direct3D для настройки графического конвейера, ознакомьтесь с шаблоном приложения DirectX 11 (универсальное для Windows) в Microsoft Visual Studio 2015. Базовый класс рендеринга в нем обеспечивает хорошую основу для настройки графической инфраструктуры Direct3D 11. и настройка основных ресурсов на нем, а также поддержка функций приложения универсальной платформы Windows (UWP), таких как поворот экрана.

В EGL очень мало API-интерфейсов по сравнению с Direct3D 11, и навигация по последнему может стать проблемой, если вы не знакомы с названиями и жаргоном, характерными для платформы. Вот простой обзор, который поможет вам сориентироваться.

Сначала просмотрите сопоставление базового объекта EGL с интерфейсом Direct3D:

Графическая функция Аппаратное обеспечение OpenGL Основное оборудование OpenGL Программное обеспечение OpenGL в WindowsПрограммное обеспечение OpenGL в Linux
Сглаживание графикиПоддерживается для OpenGL 2.1 или вышеПоддерживается для OpenGL 2.1 или выше вышеНе поддерживаетсяНе поддерживается
Прозрачность глубокого отслаиванияПоддерживается для OpenGL 2.1 или выше< /td>ОтключеноНе поддерживаетсяПоддерживается
Выровнять центры вершинПоддерживается для OpenGL 2.1 или вышеОтключеноНе поддерживаетсяНе поддерживается
Маркеры с аппаратным ускорениемПоддерживается для OpenGL 4.0 или вышеОтключеноНе поддерживаетсяНе поддерживается

А теперь самый простой процесс настройки простого графического отображения, ресурсов и контекста в DXGI и Direct3D для приложения UWP.

  1. Получите дескриптор объекта CoreWindow для основного потока пользовательского интерфейса приложения, вызвав CoreWindow::GetForCurrentThread.
  2. Для приложений UWP получите цепочку обмена из IDXGIAdapter2 с помощью IDXGIFactory2::CreateSwapChainForCoreWindow и передайте ей ссылку CoreWindow, полученную на шаге 1. Взамен вы получите экземпляр IDXGISwapChain1. Ограничьте его объектом рендеринга и его потоком рендеринга.
  3. Получите экземпляры ID3D11Device1 и ID3D11DeviceContext1, вызвав метод D3D11Device::CreateDevice. Примените их также к объекту средства визуализации.
  4. Создавайте шейдеры, текстуры и другие ресурсы, используя методы объекта ID3D11Device1 средства визуализации.
  5. Определяйте буферы, запускайте шейдеры и управляйте этапами конвейера с помощью методов объекта ID3D11DeviceContext1 средства визуализации.
  6. После выполнения конвейера и отрисовки кадра в задний буфер отобразите его на экране с помощью IDXGISwapChain1::Present1.

Чтобы изучить этот процесс более подробно, см. статью Начало работы с графикой DirectX. В оставшейся части этой статьи рассматриваются многие общие шаги по базовой настройке графического конвейера и управлению им.

Примечание. Приложения Windows Desktop имеют разные API для получения цепочки обмена Direct3D, например D3D11Device::CreateDeviceAndSwapChain, и не используют объект CoreWindow.

Получение окна для отображения

В этом примере eglGetDisplay передается HWND для ресурса окна, характерного для платформы Microsoft Windows. Другие платформы, такие как Apple iOS (Cocoa) и Google Android, имеют разные дескрипторы или ссылки на ресурсы окна и могут иметь другой синтаксис вызова. После получения отображения вы инициализируете его, устанавливаете предпочтительную конфигурацию и создаете поверхность с задним буфером, в котором вы можете рисовать.

Получение отображения и его настройка с помощью EGL..

В Direct3D главное окно приложения UWP представлено объектом CoreWindow, который можно получить из объекта приложения, вызвав CoreWindow::GetForCurrentThread в рамках процесса инициализации "поставщика представлений", который вы создаете для Direct3D. (Если вы используете взаимодействие Direct3D-XAML, вы используете поставщика представлений платформы XAML.) Процесс создания поставщика представлений Direct3D описан в разделе Как настроить приложение для отображения представления.

Получение CoreWindow для Direct3D.

После получения ссылки CoreWindow окно должно быть активировано, при этом выполняется метод Run основного объекта и начинается обработка событий окна. После этого создайте ID3D11Device1 и ID3D11DeviceContext1 и используйте их для получения базовых IDXGIDevice1 и IDXGIAdapter, чтобы вы могли получить объект IDXGIFactory2 для создания ресурса цепочки обмена на основе вашей конфигурации DXGI_SWAP_CHAIN_DESC1.

Настройка и установка цепочки обмена DXGI в CoreWindow для Direct3D.

Вызовите метод IDXGISwapChain1::Present1 после подготовки кадра для его отображения.

Обратите внимание, что в Direct3D 11 нет абстракции, идентичной EGLSurface. (Есть IDXGISurface1, но он используется по-другому.) Наиболее близким концептуальным приближением является объект ID3D11RenderTargetView, который мы используем для назначения текстуры (ID3D11Texture2D) в качестве заднего буфера, в который будет отрисовываться наш конвейер шейдеров.

Настройка заднего буфера для цепочки подкачки в Direct3D 11

Хорошей практикой является вызов этого кода всякий раз, когда окно создается или изменяется в размере. Во время рендеринга задайте целевое представление рендеринга с помощью ID3D11DeviceContext1::OMSetRenderTargets перед настройкой любых других подресурсов, таких как буферы вершин или шейдеры.

Создание контекста рендеринга

В EGL 1.4 "дисплей" представляет собой набор оконных ресурсов. Как правило, вы настраиваете «поверхность» для отображения, предоставляя набор атрибутов экранному объекту и получая взамен поверхность. Вы создаете контекст для отображения содержимого поверхности, создавая этот контекст и привязывая его к поверхности и отображению.

Поток вызовов обычно выглядит примерно так:

  • Вызовите eglGetDisplay с дескриптором ресурса отображения или окна и получите объект отображения.
  • Инициализируйте отображение с помощью eglInitialize.
  • Получите доступную конфигурацию дисплея и выберите ее с помощью eglGetConfigs и eglChooseConfig.
  • Создайте поверхность окна с помощью eglCreateWindowSurface.
  • Создайте контекст отображения для рисования с помощью eglCreateContext.
  • Привяжите контекст отображения к отображению и поверхности с помощью eglMakeCurrent.

В предыдущем разделе мы создали EGLDisplay и EGLSurface, а теперь используем EGLDisplay для создания контекста и связывания этого контекста с дисплеем, используя настроенный EGLSurface для параметризации вывода.

Получение контекста рендеринга с помощью EGL 1.4

Контекст рендеринга в Direct3D 11 представлен объектом ID3D11Device1, который представляет адаптер и позволяет создавать ресурсы Direct3D, такие как буферы и шейдеры; и объектом ID3D11DeviceContext1, который позволяет управлять графическим конвейером и выполнять шейдеры.

Не забывайте об уровнях функций Direct3D! Они используются для поддержки более старых аппаратных платформ Direct3D, от DirectX 9.1 до DirectX 11. Многие платформы, использующие графическое оборудование с низким энергопотреблением, такие как планшеты, имеют доступ только к функциям DirectX 9.1, а более старое поддерживаемое графическое оборудование может быть от 9.1 до 11.

Создание контекста рендеринга с помощью DXGI и Direct3D

Рисование в ресурсе текстуры или растрового изображения

Чтобы нарисовать текстуру с помощью OpenGL ES 2.0, настройте буфер пикселей или PBuffer. После того, как вы успешно сконфигурируете и создадите для него EGLSurface, вы можете предоставить ему контекст рендеринга и выполнить конвейер шейдера для рисования в текстуре.

Рисовать в пиксельный буфер с помощью OpenGL ES 2.0

В Direct3D 11 вы создаете ресурс ID3D11Texture2D и делаете его целью рендеринга. Настройте цель рендеринга с помощью D3D11_RENDER_TARGET_VIEW_DESC. Когда вы вызываете метод ID3D11DeviceContext::Draw (или аналогичную операцию Draw* в контексте устройства), используя этот целевой объект рендеринга, результаты рисуются в текстуре.

Рисование в текстуру с помощью Direct3D 11

Эту текстуру можно передать шейдеру, если она связана с ID3D11ShaderResourceView.

Рисование на экране

После того как вы использовали свой EGLContext для настройки буферов и обновления данных, вы запускаете привязанные к нему шейдеры и рисуете результаты в заднем буфере с помощью glDrawElements. Вы показываете задний буфер, вызывая eglSwapBuffers.

Откройте GL ES 2.0: рисование на экране.

В Direct3D 11 вы настраиваете свои буферы и связываете шейдеры с помощью IDXGISwapChain::Present1. Затем вы вызываете один из методов ID3D11DeviceContext1::Draw* для запуска шейдеров и отрисовки результатов в цель рендеринга, настроенную как задний буфер для цепочки обмена. После этого вы просто отображаете задний буфер на дисплее, вызывая IDXGISwapChain::Present1.

Direct3D 11: рисование на экране.

Освобождение графических ресурсов

В EGL вы освобождаете ресурсы окна, передавая EGLDisplay в eglTerminate.

Завершение отображения с помощью EGL 1.4

В приложении UWP вы можете закрыть CoreWindow с помощью CoreWindow::Close, хотя это можно использовать только для дополнительных окон пользовательского интерфейса. Основной поток пользовательского интерфейса и связанный с ним CoreWindow нельзя закрыть; скорее, срок их действия истек операционной системой. Однако при закрытии вторичного окна CoreWindow возникает событие CoreWindow::Closed.

Unity поддерживает графические API DirectX 11 (DX11) и OpenGL Core. На этой странице подробно описано, как их использовать.

Включение DirectX 11

DirectX 11 включен по умолчанию в Windows. Ваши игры и редактор Unity используют DX11 и возвращаются к DX9, когда DX11 недоступен.

Чтобы включить или отключить DirectX 11 для сборок игры и редактора, выберите «Правка» > «Настройки проекта» > «Проигрыватель», чтобы открыть настройки проигрывателя. Перейдите к «Другие настройки» и снимите флажок с Auto Graphics API для Windows. На появившейся панели выберите Direct3D11 и нажмите кнопку "минус" (-), чтобы удалить его, или нажмите кнопку "плюс" (+) и выберите Direct3D11 из списка, чтобы добавить его.

Добавление Direct3D11 в список графических API для Windows

После того, как Direct3D11 появится в списке, вы можете перетаскивать его вверх и вниз, чтобы определить приоритет, в котором выбран графический API. Редактор Unity и проигрыватель по умолчанию используют тот, это как запасной вариант, в порядке их перечисления.

ПРИМЕЧАНИЕ. Для DX11 требуется Windows Vista или более поздняя версия и как минимум графический процессор уровня DX10 (предпочтительно уровня DX11). Заголовок окна редактора Unity отображается в конце, когда он работает в режиме DX11.

Включение ядра OpenGL

OpenGL Core включен по умолчанию на Mac и Linux. Ваши игры и редактор Unity используют OpenGL Core на этих платформах.

Чтобы включить OpenGL Core в Windows и установить его по умолчанию, выберите «Правка» > «Настройки проекта» > «Проигрыватель», чтобы открыть настройки проигрывателя. Перейдите к «Другие настройки» и снимите флажок с Auto Graphics API для Windows. В появившейся панели нажмите кнопку плюса (+) и выберите OpenGLCore из списка, чтобы добавить его.

Добавление OpenGLCore в список графических API для Windows

OpenGL Core имеет следующие минимальные требования:

  • Mac OS X 10.8 (OpenGL 3.2), MacOSX 10.9 (OpenGL 3.2–4.1)
  • Windows с NVIDIA с 2006 г. (GeForce 8), AMD с 2006 г. (Radeon HD 2000), Intel с 2012 г. (HD 4000/IvyBridge) (от OpenGL 3.2 до OpenGL 4.5)
  • Linux (от OpenGL 3.2 до OpenGL 4.5)

Вычислительные шейдеры

Вычислительные шейдеры позволяют использовать GPU в качестве параллельного процессора. Дополнительные сведения см. в документации по вычислительным шейдерам.

Тесселяция и геометрические шейдеры

Поверхностные шейдеры поддерживают простую тесселяцию и смещение. Дополнительную информацию см. в документации по тесселяции шейдеров поверхности.

При написании шейдерных программ вручную вы можете использовать полный набор функций модели шейдеров DX11 5.0, включая шейдеры геометрии, корпуса и домена.

Поверхностные шейдеры и DX11

Некоторые части конвейера компиляции шейдеров поверхности не понимают синтаксис HLSL, специфичный для DX11, поэтому, если вы используете функции HLSL, такие как StructuredBuffers, RWTextures и другой синтаксис, отличный от DX9, вам необходимо включить его в препроцессор только для DX11. макрос. Дополнительную информацию см. в документации по различиям между платформами.

Эффекты изображения, хорошо работающие с DX11 и OpenGL Core

  • Эффект глубины резкости (оптимизированное разбрызгивание текстуры боке)
  • Эффект «Шум и зернистость» (более качественные шумовые паттерны)
  • Эффект размытия в движении (фильтр реконструкции более высокого качества)

Примеры

На следующих снимках экрана показаны примеры того, чего можно добиться с помощью DirectX 11 и OpenGL Core.

Объемный взрыв на приведенных выше снимках визуализируется с помощью raymarching, что становится правдоподобным с Shader Model 5.0. Кроме того, поскольку он генерирует и обновляет значения глубины, он становится полностью совместимым с эффектами изображения на основе глубины, такими как глубина резкости или размытие в движении.

Волосы на приведенном выше снимке реализованы с помощью тесселяции и геометрических шейдеров для динамического создания и анимации отдельных прядей волос. Затенение основано на модели, предложенной Каджией-Кай, которая обеспечивает более правдоподобное рассеянное и зеркальное поведение.

Подобно технике прически, показанной на предыдущем изображении, мех на этой паре тапочек также основан на создании геометрии, полученной из простой базовой сетки тапочек.

Эффект размытия на изображении выше (известный как боке) основан на нанесении текстуры поверх очень ярких пикселей. Это создает очень правдоподобное размытие объектива камеры, особенно при использовании в сочетании с визуализацией HDR.

На этом изображении показано преувеличенное размытие объектива. Это возможный результат использования нового эффекта глубины резкости.

Авторские права © Unity Technologies, 2017. Публикация: 5.6-001Н. Дата постройки: 12 июля 2017 г.

Unity может использовать графические API DirectX 11 и OpenGL Core со всеми ожидаемыми от них функциями: вычислительные шейдеры, шейдеры тесселяции, модель шейдеров 5.0 и т. д.

Включение DirectX 11

Этот параметр включен по умолчанию (т. е. в Windows ваши игры и редактор будут пытаться использовать DX11 и возвращаться к DX9, когда он недоступен). Чтобы включить DirectX 11 для сборок игры и редактора, включите параметр «Использовать DX11» в настройках проигрывателя.

ПРИМЕЧАНИЕ. Для DX11 требуется Windows Vista или более поздняя версия и как минимум графический процессор уровня DX10 (предпочтительно уровня DX11). Заголовок окна редактора Unity отображается в конце, когда он работает в режиме DX11.

Включение ядра OpenGL

Этот параметр включен по умолчанию для Mac и Linux (т. е. на этих платформах ваши игры и редактор будут использовать OpenGL Core).

Вы можете включить OpenGL Core в Windows и установить его по умолчанию, перейдя в настройки проигрывателя, сняв флажок «Auto Graphics API для Windows» и добавив OpenGL Core в список. Затем вы можете перетащить OpenGL Core в начало списка, если хотите использовать его по умолчанию.

Включение ядра OpenGL для Windows

ПРИМЕЧАНИЕ. Минимальные требования OpenGL Core:*

  • Mac OS X 10.8 (OpenGL 3.2), MacOSX 10.9 (OpenGL 3.2–4.1)
  • Windows с NVIDIA с 2006 г. (GeForce 8), AMD с 2006 г. (Radeon HD 2000), Intel с 2012 г. (HD 4000 / IvyBridge) (от OpenGL 3.2 до OpenGL 4.5).
  • Linux (от OpenGL 3.2 до OpenGL 4.5).

Эффекты изображения, которые могут использовать преимущества DX11/OpenGL Core

  • Эффект глубины резкости (оптимизированное разбрызгивание текстуры боке)
  • Эффект «Шум и зернистость» (более качественные шумовые паттерны)
  • Эффект размытия в движении (фильтр реконструкции более высокого качества)

Вычислительные шейдеры

Вычислительные шейдеры позволяют использовать GPU в качестве процессора с массовым параллелизмом. Подробнее о режиме см. на странице Compute Shaders.

Тесселяция и геометрические шейдеры

Шейдеры поверхности поддерживают простую тесселяцию и смещение, см. страницу Мозаика шейдеров поверхности.

При написании шейдерных программ вручную можно использовать полный набор функций модели шейдеров DX11 5.0, включая геометрические шейдеры, шейдеры оболочки и домена.

Поверхностные шейдеры и DX11

В настоящее время некоторые части конвейера компиляции поверхностных шейдеров не понимают синтаксис HLSL, специфичный для DX11, поэтому при использовании функций HLSL, таких как StructuredBuffers, RWTextures и другой синтаксис, отличный от DX9, вам необходимо включить его в макрос препроцессора только для DX11. Подробнее см. на странице «Различия платформ».

Примеры

На следующих снимках экрана показаны примеры возможностей DirectX 11/OpenGL Core.

Объемный взрыв на этих кадрах визуализируется с помощью raymarching, что становится правдоподобным с моделью шейдера 5.0. Более того, поскольку он генерирует и обновляет значения глубины, он становится полностью совместимым с эффектами изображения на основе глубины, такими как глубина резкости или размытие движения. Волосы на этом снимке реализованы с помощью шейдеров тесселяции и геометрии для динамического создания и анимации отдельных прядей волос. Затенение основано на модели, предложенной Kajiya-Kai, которая обеспечивает более правдоподобное рассеянное и зеркальное поведение. Подобно технике с волосами выше, показанный мех тапочек также основан на создании геометрии, испускаемой из простой базовой сетки тапочек. Эффект размытия на этом изображении (известный как боке) основан на нанесении текстуры поверх очень ярких пикселей. Это может создать очень правдоподобное размытие объектива камеры, особенно при использовании в сочетании с рендерингом HDR. Преувеличенное размытие объектива, как на скриншоте выше. Это возможный результат использования нового эффекта глубины резкости

Читайте также:

абстракция EGL Аналогичное представление Direct3D
EGLDisplay В Direct3D (для приложений UWP) дескриптор отображения получается через Windows::UI::CoreWindow API (или интерфейс ICoreWindowInterop, предоставляющий HWND). Конфигурация адаптера и оборудования задается с COM-интерфейсами IDXGIAdapter и IDXGIDevice1 соответственно.
EGLSurface В Direct3D буферы и другие ресурсы окна (видимые или вне экрана) создаются и настраиваются с помощью определенных интерфейсов DXGI, включая IDXGIFactory2 (реализация фабричного шаблона, используемого для получения ресурсов DXGI, таких как IDXGISwapChain1 (буферы отображения). ID3D11Device1, представляющий графическое устройство и его ресурсы, получается с помощью D3D11Device::CreateDevice . Для целей рендеринга используйте интерфейс ID3D11RenderTargetView.
EGLContext В Direct3D вы настраиваете и отдаете команды графическому конвейеру с помощью интерфейса ID3D11DeviceContext1.< /td>
EGLConfig В Direct3D 11 вы создаете и настраиваете графические ресурсы, такие как буферы, текстуры, трафареты и шейдеры, с помощью методов интерфейса ID3D11Device1.