- opengl/
- 如何确保我的Windows OpenGL应用程序的向后兼容性?
如何确保我的Windows OpenGL应用程序的向后兼容性?
如何确保我的Windows OpenGL应用程序的向后兼容性?,opengl,compatibility,backwards-compatibility,Opengl,Compatibility,Backwards Compatibility,我开发了一个程序,它利用了OpenGL的许多方面——从非常新的功能到不推荐使用的功能,并希望确保它在绝大多数机器上都能正常工作,尤其是在带有过时图形卡的机器上
最大化OpenGL应用程序(向后)兼容性的最佳方法是什么
我如何测试我的程序与旧硬件的兼容性,而不实际使用旧硬件的测试机器
有哪些方法可以找到兼容性测试期间可能遇到的问题的根本原因
要最大限度地提高向后兼容性,并获得跟踪目标机器功能(imho)的强大工具,最好的方法是使用类似的工具。它将为您加载OpenGL版本特定的函数,您可以测试用户
我开发了一个程序,它利用了OpenGL的许多方面——从非常新的功能到不推荐使用的功能,并希望确保它在绝大多数机器上都能正常工作,尤其是在带有过时图形卡的机器上
- 最大化OpenGL应用程序(向后)兼容性的最佳方法是什么
- 我如何测试我的程序与旧硬件的兼容性,而不实际使用旧硬件的测试机器
- 有哪些方法可以找到兼容性测试期间可能遇到的问题的根本原因
要最大限度地提高向后兼容性,并获得跟踪目标机器功能(imho)的强大工具,最好的方法是使用类似的工具。它将为您加载OpenGL版本特定的函数,您可以测试用户系统(或者更准确地说,视频驱动程序)是否支持这些函数。
这个库的使用非常简单,有很好的文档记录,你可以用谷歌搜索很多例子。
所以,如果目标机器没有一些新的opengl函数,您可以加载名为“opengl\u old.cpp”的模块(例如),或者如果它没有一些已经被弃用的功能(如glBegin()、glEnd()),您最好继续使用“opengl\u new.cpp”
基本上,大多数更改都是在OpenGL 3.0(以及3.3)中完成的,引入了着色器作为唯一未弃用的图形管道,因此您可以在程序中创建两个OpenGL模块:一个用于OpenGL 1和2,另一个用于OpenGL 3和4。至少我用自己的代码以这种方式解决了这个问题
要测试某些功能,可以在创建上下文时指定要加载的OpenGL API的具体版本
最大化OpenGL应用程序(向后)兼容性的最佳方法是什么
定义“兼容性”?如果希望应用程序在尽可能多的硬件上运行,则基本上必须完全放弃着色器,并坚持使用GL 1.4。这里的主要混淆问题是英特尔驱动程序错误;许多较旧的英特尔硬件将声称支持GL 2.0或2.1,但它们在这一支持方面有无数的缺陷
我如何测试我的程序与旧硬件的兼容性,而不实际使用旧硬件的测试机器
你没有。与旧硬件的兼容性不仅仅是坚持一个标准。这是关于确保您的程序不会遇到驱动程序错误。唯一的方法就是在感兴趣的硬件上进行实际测试
有哪些方法可以找到兼容性测试期间可能遇到的问题的根本原因
在最近的硬件上测试相同的代码。如果它有相同的失败,那么问题可能出在代码中。如果它在最近的硬件上运行良好,但在旧的硬件上失败,那么问题几乎肯定是旧硬件驱动程序的驱动程序错误
开发解决方案。自2.0以来,着色器一直是OpenGL的核心功能。Nicol Bolas,谢谢!我已经更正了我的答案,以便更准确地说明我的意思。关于我想补充的“旧硬件和驱动程序”问题,许多图形开发人员都有大量的旧的和过时的图形卡。例如,我的收藏可以追溯到GeForce 2和Radeon 9500,其中每个主要GPU版本都有一个型号。然而,这些天我不再为低于着色器模型3的任何东西开发。