Работа с видеокартой nVidia Optimus в DelphiDelphi , Графика и Игры , OpenGLВидеокарты nVidia Optimus представляют собой комбинацию интегрированной и дискретной графической карты в одном устройстве. Оптимус автоматически переключается между ними в зависимости от приложения, которое вы запускаете. Однако, если вы хотите, чтобы ваше приложение всегда работало на дискретной видеокарте, вам нужно явно указать это. В этой статье мы рассмотрим, как заставить систему с видеокартой nVidia Optimus использовать реальную GPU для вашего приложения, разработанного в Delphi. Решение проблемы Согласно документу "Включение высокопроизводительной графической обработки на системах Optimus" (http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf), начиная с драйверов версии 302, разработчики приложений могут указать драйверу Optimus во время выполнения использовать дискретную видеокарту для любых приложений, даже тех, для которых нет существующего профиля приложения. Это можно сделать, экспортировав глобальную переменную по имени NvOptimusEnablement. Драйвер Optimus ищет существование и значение экспорта. В настоящее время имеет значение только младший бит DWORD. Значение 0x00000001 указывает, что рендеринг должен выполняться с использованием высокопроизводительной графики, а значение 0x00000000 указывает, что этот метод должен быть проигнорирован. Пример использования:
Однако, если вы хотите сделать это в Delphi, проблема заключается в том, что Delphi не поддерживает экспорт переменных, хотя существуют некоторые хакеры. Один из пользователей StackOverflow нашел решение, экспортируя переменную из Delphi DLL следующим образом:
Альтернативный ответ Если вы не хотите экспортировать переменную, другой вариант - статически связать ваше приложение с одной из нескольких перечисленных DLL. Однако это может привести к тому, что в ваше приложение будут вставлены зависимости, которые вам не нужны. Вывод В этой статье мы рассмотрели, как заставить систему с видеокартой nVidia Optimus использовать реальную GPU для вашего приложения, разработанного в Delphi. Мы рассмотрели два возможных решения: экспорт глобальной переменной и статическую связь с DLL. Мы также рассмотрели альтернативный ответ и обсудили его плюсы и минусы. Надеемся, что эта информация поможет вам разработать приложение, которое будет работать на дискретной видеокарте на системах с видеокартой nVidia Optimus. Статья описывает, как заставить видеокарты nVidia Optimus использовать дискретную GPU для приложений, разработанных в Delphi. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |