0

我使用 OpenGL 已经有一段时间了,几乎每次我用 glsl 着色器创建一些程序时,它在许多机器上的作用都不同。现在我猜这是因为有些机器部分或完全不支持它们。我想知道我可以用什么来确保至少对 OpenGL 2.1+ 有尽可能多的兼容性,并且仍然使用像着色器这样的好东西,而不是使用像立即模式这样的固定管道。

我还注意到,在两台都支持 OpenGL 3.2 和使用 OpenGL 3.2 函数的机器上,结果是不同的。一台有工件,一台没有。

我可以做什么/使用什么来确保最大的兼容性,而无需在十亿台机器上进行测试以确保它可以正常工作并且我不必为特定机器修复东西?

编辑:所以为了缩小问题的范围,在 OpenGL 2.1 中最先进的渲染方式是什么?我可以在那个版本中使用着色器吗?

4

1 回答 1

1

这不是一个容易回答的问题。

我建议使用您接受的最低版本的 OpenGL。如果您的客户端支持 OpenGL 2.1 的可能性高于 OpenGL 4.4,那么坚持使用 2.1。

如果您有更多时间进行开发,您可以走得更高,并且当特定的 OpenGL 版本可用时使用它。例如,当支持 GL3.3 时,请使用几何着色器。

一般来说,它取决于几个因素:

  • 您的可用开发时间(您可以支持不同的版本,或者您可能只有一个时间)
  • 客户端(客户端的硬件)
  • 需要高级图形(也许你不能低于 GL3.3)

另一件事是 GL 驱动程序。这是一个有点过时的链接,可以提供帮助......还有一个类似的堆栈问题

于 2013-08-16T19:16:17.523 回答