Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Работа с видеокартой nVidia Optimus в Delphi

Delphi , Графика и Игры , 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 указывает, что этот метод должен быть проигнорирован.

Пример использования:

extern "C" {
  _declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
}

Однако, если вы хотите сделать это в Delphi, проблема заключается в том, что Delphi не поддерживает экспорт переменных, хотя существуют некоторые хакеры. Один из пользователей StackOverflow нашел решение, экспортируя переменную из Delphi DLL следующим образом:

library GlobalVarExport;

uses
  Windows;

var
  NvOptimusEnablement: DWORD;

exports
  NvOptimusEnablement;

begin
  NvOptimusEnablement := 1;
end.

Альтернативный ответ

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

Вывод

В этой статье мы рассмотрели, как заставить систему с видеокартой nVidia Optimus использовать реальную GPU для вашего приложения, разработанного в Delphi. Мы рассмотрели два возможных решения: экспорт глобальной переменной и статическую связь с DLL. Мы также рассмотрели альтернативный ответ и обсудили его плюсы и минусы. Надеемся, что эта информация поможет вам разработать приложение, которое будет работать на дискретной видеокарте на системах с видеокартой nVidia Optimus.

Создано по материалам из источника по ссылке.

Статья описывает, как заставить видеокарты nVidia Optimus использовать дискретную GPU для приложений, разработанных в Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: OpenGL ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 19:06:10/0.0049421787261963/1