我正在尝试理解显卡版本、OpenGL版本和API头文件如何协同工作。我已经在OpenGL论坛和其他地方阅读了关于OpenGL 2.0/3.0/3.1的争议,但对于我这样一个新手开发人员来说,这仍然不太清楚(顺便说一句,我在这个问题中使用nVidia作为例子,因为我要购买他们的显卡,但显然我希望我的软件能够跨平台)。
首先,需要支持OpenGL版本的GPU。但是例如nVidia为旧视频卡提供驱动程序以支持OpenGL 3。这是否意味着这些驱动程序通过软件实现某些功能以模拟硬件中没有的新功能?
然后是API头文件。如果我决定编写支持OpenGL 3的应用程序,我应该等到微软发布更新的平台SDK并具有支持此版本的头文件吗?如何选择要使用的API版本-通过代码中的预处理器定义,还是只需更新到最新的平台SDK即可升级到最新版本(无法想象这是最后一种选择,但你永远不知道……)。
关于向后兼容性怎么样?如果我编写一个针对OpenGL 1.2的应用程序,安装了支持OpenGL 3的驱动程序的用户是否仍然能够运行它,或者我应该在我的应用程序中测试卡的功能/支持的版本?阅读http://developer.nvidia.com/object/opengl_3_driver.html似乎确认至少对于nVidia卡,针对1.2编写的应用程序将继续工作,但这也意味着其他供应商可能会停止支持1.2 API。基本上,这可能会使我在未来处于这样的位置,即软件不会与最新的卡一起工作,因为它们不再支持1.2。但是,如果我今天开发OpenGL 3甚至2,我可能会排除那些只支持1.2的gpu的用户。
我不需要OpenGL中的花哨功能-我几乎根本不使用任何着色,固定管道对我很有效(我的应用程序类似于CAD)。基于哪个版本是基于预期成为长期应用程序的最佳选择,并且在未来几年内进行增量更新?
我可能忘记了其他相关问题,在这种情况下,任何见解都非常感谢。
首先,需要支持OpenGL版本的GPU。但是例如nVidia为旧视频卡提供驱动程序以支持OpenGL 3。这是否意味着这些驱动程序通过软件实现某些功能以模拟硬件中没有的新功能?
然后是API头文件。如果我决定编写支持OpenGL 3的应用程序,我应该等到微软发布更新的平台SDK并具有支持此版本的头文件吗?如何选择要使用的API版本-通过代码中的预处理器定义,还是只需更新到最新的平台SDK即可升级到最新版本(无法想象这是最后一种选择,但你永远不知道……)。
关于向后兼容性怎么样?如果我编写一个针对OpenGL 1.2的应用程序,安装了支持OpenGL 3的驱动程序的用户是否仍然能够运行它,或者我应该在我的应用程序中测试卡的功能/支持的版本?阅读http://developer.nvidia.com/object/opengl_3_driver.html似乎确认至少对于nVidia卡,针对1.2编写的应用程序将继续工作,但这也意味着其他供应商可能会停止支持1.2 API。基本上,这可能会使我在未来处于这样的位置,即软件不会与最新的卡一起工作,因为它们不再支持1.2。但是,如果我今天开发OpenGL 3甚至2,我可能会排除那些只支持1.2的gpu的用户。
我不需要OpenGL中的花哨功能-我几乎根本不使用任何着色,固定管道对我很有效(我的应用程序类似于CAD)。基于哪个版本是基于预期成为长期应用程序的最佳选择,并且在未来几年内进行增量更新?
我可能忘记了其他相关问题,在这种情况下,任何见解都非常感谢。