首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何确保我的Windows OpenGL应用程序的向后兼容性?

如何确保我的Windows OpenGL应用程序的向后兼容性?
EN

Stack Overflow用户
提问于 2012-09-26 10:56:07
回答 2查看 557关注 0票数 3

我开发了一个程序,它利用了OpenGL的许多方面--从非常新的功能到不推荐的功能,并希望确保它在绝大多数机器上正确工作--特别是在那些带有过时显卡的机器上。

  • 最大限度地提高OpenGL应用程序(向后)兼容性的最佳方法是什么?
  • 如何测试我的程序与旧硬件的兼容性,而不需要实际使用旧硬件的测试机器?
  • 有什么方法可以找出在兼容性测试中可能遇到的问题的根本原因?
EN

回答 2

Stack Overflow用户

发布于 2012-09-26 18:22:00

最大限度地提高OpenGL应用程序(向后)兼容性的最佳方法是什么?

定义“兼容性”?如果你想要一个应用程序运行在尽可能多的硬件上,那么你基本上必须完全放弃着色器,坚持使用GL1.4。这里的主要问题是Intel驱动程序错误;许多旧的Intel硬件将声称支持GL2.0或2.1,但它们在这种支持中有无数的缺陷。

如何测试我的程序与旧硬件的兼容性,而不需要实际使用旧硬件的测试机器?

与旧硬件的兼容性不仅仅是坚持一个标准。它是关于确保您的程序不会遇到驱动程序错误。唯一的方法就是对感兴趣的硬件进行实际测试。

有什么方法可以找出在兼容性测试中可能遇到的问题的根本原因?

在最近的硬件上测试相同的代码。如果它有相同的故障,那么问题很可能在您的代码中出现。如果它在最近的硬件上工作得很好,但在旧的东西上却失败了,那么这个问题几乎可以肯定是旧硬件驱动程序的驱动程序错误。

找个解决办法。

票数 2
EN

Stack Overflow用户

发布于 2012-09-26 11:12:15

嗯,最大化向后兼容性和获得跟踪目标机器功能(imho)的强大工具的最佳方法是使用类似GLEW: OpenGL扩展Wrangler库的工具。它将为您加载特定于OpenGL版本的函数,您可以测试它们是否被用户的系统所支持(或者更正确地说,由视频驱动程序支持)。这个库使用起来非常简单,它有很好的文档,你可以搜索很多例子。因此,如果目标机器没有一些新的opengl函数,则加载名为"opengl_old.cpp“的模块(例如),或者如果它没有一些已经被废弃的功能(如glBegin()、glEnd()),则最好继续使用"opengl_new.cpp”。

基本上,大多数修改都是在OpenGL 3.0中完成的(而且还有3.3),着色器是唯一不受欢迎的图形管道,所以您可以在程序中创建两个opengl模块:一个用于OpenGL 1和2,另一个用于OpenGL 3和4。至少我用自己的代码解决了这个问题。

要测试某些功能,可以在创建上下文时指定要加载的OpenGL API的具体版本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12600144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档