Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何确保我的Windows OpenGL应用程序的向后兼容性?_Opengl_Compatibility_Backwards Compatibility - Fatal编程技术网

如何确保我的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的任何东西开发。