如果您打开 "Graphics and Gaming (Windows)" on microsoft.com 页面
最后一个类别被描述为
Legacy Graphics: 过时的技术,不应在新应用程序中使用。
这个类别包括(但不限于)以下 API:
- GDI
- GDI+
- OpenGL
你有什么看法?如果我想发布一款新软件,它必须支持 Windows XP(仍然占所有已安装系统的大约50%)。Direct2D 需要 Windows 7 / Vista。还应该使用什么?
如果您打开 "Graphics and Gaming (Windows)" on microsoft.com 页面
最后一个类别被描述为
Legacy Graphics: 过时的技术,不应在新应用程序中使用。
这个类别包括(但不限于)以下 API:
你有什么看法?如果我想发布一款新软件,它必须支持 Windows XP(仍然占所有已安装系统的大约50%)。Direct2D 需要 Windows 7 / Vista。还应该使用什么?
我怀疑微软对“遗留”的定义与任何明智的开发者所应该做的事情无关,而是基于Windows API的一些大规模重写。
从Windows Vista开始,微软一直在重新设计许多API。现在我们有MMDevAPI作为唯一真正的音频API,WIC是唯一真正的图像文件API等。从我看到/听到的情况来看,这些新API比旧API要好得多,而所有“遗留”系统都基于新API工作。在Windows Vista及更高版本中,DirectSound完全基于MMDevAPI,需要读取图像文件的组件通过WIC完成。
Windows 8将有一个ARM版本,似乎只支持当前Windows API的子集。在Windows on ARM发布之前,我们不会确定,但根据Visual Studio 11中为ARM平台包含的库(参考:http://www.winehq.org/pipermail/wine-devel/2012-March/094559.html),看起来GDI+和OpenGL将不可用。GDI可供链接,但这并不一定意味着它完整无损。
这个新的API大致对应于Vista及更高版本中VS11 ARM目标中的库。我猜列表中的任何内容都是因为它要么是做某件事的最新和最好的方式,要么它在技术上太重要而不能被丢弃(至少现在是这样)。因此,“遗留”的定义是指不是至少一件事情的最新和最好的方式。OpenGL并未被弃用,微软的实现被弃用了。微软的实现停留在1.1版本,已经过时了。当前标准的版本已经超过了4。如果你想使用OpenGL,在Windows桌面上,NVIDIA、AMD和Intel显卡都完全支持它,但是不支持在Metro Windows Modern UI应用程序中使用,这是一个行业标准,也可以在Mac和Linux上使用。如果你需要一个软件后备实现,Mesa可以满足你的需求,并且它甚至可以在DOS上工作。 (由于Mesa可以渲染到内存缓冲区,没有理由它不能在Modern UI应用程序中工作,但是你可能不想这样做,因为它可能会很慢。)需要注意的一点是,访问Windows桌面上的OpenGL功能的API WGL依赖于GDI(已经被弃用了),所以如果你想使你的应用程序迎接未来,最好使用类似FreeGLUT或SDL的东西,这也会带来平台独立性。
OpenGL ES 是 OpenGL 的一种变体,可在 Android 和 Apple iOS 上运行。 通过 WebGL ,还可以在JavaScript中使用它,Internet Explorer 11会支持该技术(几乎每个其他浏览器已经支持)。 ANGLE为Windows提供了一个 GLES 的硬件加速实现,其中利用了DirectX(版本9或11),因此也应该适用于现代化UI应用程序。 Mesa再次涵盖了软件实现。
简而言之: OpenGL不仅没有被弃用,而且跨平台,标准化,并且在行业中有巨大的动力。相比之下,GDI和GDI +则不然。