ผมคิดว่าหลายคำตอบพลาดจุดสำคัญ: คุณสามารถเขียนแอพพลิเคว่าฮาร์ดแวร์เข้าถึงโดยตรงแต่ไม่ได้อยู่ในระบบปฏิบัติการที่ทันสมัย มันไม่ใช่แค่ปัญหาเวลา แต่เป็นปัญหา "คุณไม่มีทางเลือก"
Windows, Linux, OSX และอื่น ๆ ทั้งหมดห้ามการเข้าถึงฮาร์ดแวร์โดยตรงกับแอปพลิเคชันโดยพลการ นี่เป็นสิ่งสำคัญสำหรับเหตุผลด้านความปลอดภัย: คุณไม่ต้องการให้แอปสุ่มใด ๆ สามารถอ่านหน่วยความจำ GPU โดยพลการได้ด้วยเหตุผลเดียวกับที่คุณไม่ต้องการให้แอปสุ่มใด ๆ สามารถอ่านหน่วยความจำระบบได้ สิ่งต่าง ๆ เช่น framebuffer สำหรับบัญชีธนาคารของคุณหรืออะไรก็ตามที่ไม่ได้อยู่ในหน่วยความจำ GPU คุณต้องการให้สิ่งนั้นถูกแยกและได้รับการป้องกันและควบคุมการเข้าถึงโดยระบบปฏิบัติการของคุณ
เฉพาะไดรเวอร์เท่านั้นที่สามารถพูดคุยกับฮาร์ดแวร์ส่วนใหญ่ได้โดยตรงและวิธีเดียวที่จะพูดคุยกับไดรเวอร์คือผ่าน HAL ที่เปิดเผยของระบบปฏิบัติการและอินเทอร์เฟซที่เป็นกรรมสิทธิ์และเข้ากันไม่ได้ของไดรเวอร์แต่ละตัว อินเทอร์เฟซไดรเวอร์นั้นไม่เพียง แต่จะแตกต่างกันไปสำหรับผู้จำหน่ายแต่ละราย แต่ยังจะแตกต่างกันระหว่างเวอร์ชั่นของไดรเวอร์เองทำให้ไม่สามารถพูดคุยกับอินเทอร์เฟซผู้บริโภคได้โดยตรง เลเยอร์เหล่านี้มักจะครอบคลุมโดยการควบคุมการเข้าถึงที่จำกัดความสามารถของแอปพลิเคชันในการเข้าถึง
ไม่เกมของคุณไม่สามารถใช้ฮาร์ดแวร์ได้โดยตรงเว้นแต่แน่นอนว่าคุณกำหนดเป้าหมายเฉพาะระบบปฏิบัติการที่ไม่ปลอดภัยเช่น DOS และตัวเลือกเดียวที่เป็นไปได้สำหรับเกมบนระบบปฏิบัติการผู้บริโภคยุคใหม่คือการกำหนดเป้าหมาย API สาธารณะเช่น DirectX, OpenGL หรือ Vulkan