如果给我一个任意 3D 应用程序(例如屏幕保护程序或游戏),我如何知道它在运行时使用的是哪个 DirectX 或 OpenGL 版本?假设我没有关于在线 google 的二进制文件的信息,比如有人刚刚编写了一个 DirectX 演示并将其提供给我。
那么,程序二进制文件将链接到 Direct3D DLL 或 OpenGL DLL。在 DirectX 中,每个版本都有一组自己的 DLL。对于 OpenGL,唯一的判断方法是拦截 OpenGL 调用。OpenGL-3 及更高版本需要一些特殊的上下文创建方法,其中包括设置预期版本。OpenGL-3 之前的任何内容实际上都是带有扩展的 OpenGL-1.1,其中一些扩展成为核心功能。