Я думаю, что во многих ответах упущен важный момент: вы можете писать приложения, которые имеют прямой доступ к оборудованию, но не в современных операционных системах . Это не просто проблема времени, но проблема «у вас нет выбора».
Windows, Linux, OSX и т. Д. Запрещают прямой аппаратный доступ к произвольным приложениям. Это важно по соображениям безопасности: вы не хотите, чтобы какое-либо случайное приложение могло читать произвольную память графического процессора, по той же причине, по которой вы не хотите, чтобы какое-либо случайное приложение могло читать системную память. Такие вещи, как кадровый буфер для вашего банковского счета или еще что-то, хранящееся в памяти GPU. Вы хотите, чтобы этот материал был изолирован и защищен, а доступ контролировался вашей ОС.
Только драйверы могут общаться непосредственно с большинством аппаратного обеспечения, и единственный способ общаться с драйвером - через открытый HAL операционной системы и собственный и несовместимый интерфейс каждого драйвера. Этот интерфейс драйвера не только будет отличаться для каждого поставщика, но даже будет отличаться в зависимости от версии самого драйвера, что делает практически невозможным непосредственный обмен данными с интерфейсом в потребительском приложении. Эти уровни часто покрываются элементами управления доступом, которые дополнительно ограничивают возможность доступа приложения к ним.
Так что нет, ваша игра не может просто использовать аппаратное обеспечение напрямую, если, конечно, вы не нацелены только на небезопасные операционные системы, такие как DOS, и ваша единственная реальная возможность для игры на современных потребительских операционных системах - нацеливаться на открытый API, такой как DirectX, OpenGL или Vulkan.