Я думаю, що багато відповідей пропускають важливий момент: ви можете писати програми, які безпосередньо отримують доступ до обладнання, але не в сучасних операційних системах . Це не просто проблема часу, а проблема "у вас немає вибору".
Windows, Linux, OSX тощо забороняють прямий доступ до апаратних засобів до довільних програм. Це важливо з міркувань безпеки: ви не хочете, щоб будь-яка випадкова програма могла читати довільну пам'ять GPU з тієї ж причини, якщо ви не хочете, щоб будь-яка випадкова програма могла читати системну пам'ять. Такі речі, як фреймбуфер для вашого банківського рахунку або що-небудь ще не зберігається в пам'яті GPU. Ви хочете, щоб ці речі були ізольованими та захищеними та доступом контролюється ваша ОС.
Тільки драйвери можуть спілкуватися безпосередньо з більшою частиною апаратних засобів, і єдиний спосіб спілкуватися з драйвером - це через HAL, відкритий в ОС, і власний та несумісний інтерфейс кожного драйвера. Цей інтерфейс драйвера буде відрізнятися не тільки для кожного постачальника, але навіть відрізнятиметься між версіями самого драйвера, що робить його неможливим спілкування безпосередньо з інтерфейсом у додатку для споживачів. Ці шари часто охоплюються контролем доступу, що додатково обмежує можливість додатку отримувати доступ до них.
Отже, ні, ваша гра не може просто використовувати апаратне забезпечення безпосередньо, якщо, звичайно, ви не орієнтуєтесь лише на небезпечні операційні системи, такі як DOS, і ваш єдиний можливий варіант для гри в сучасних споживчих операційних системах - націлити на публічний API, такий як DirectX, OpenGL або Вулкан.