gpt4 book ai didi

OpenGL - opengl 3.1 中的采样器?

转载 作者:行者123 更新时间:2023-12-01 10:50:10 27 4
gpt4 key购买 nike

我在我的应用程序中经常使用采样器并且一切正常。

问题是,我只能在笔记本电脑上使用 opengl 3.1。根据文档,采样器仅适用于 opengl 3.3 或更高版本,但我在这里有点困惑。

我可以很好地使用“glGenSamplers”,没有生成任何错误,采样器 ID 似乎也很好。在有效纹理上使用“glBindSampler”时,出现“GL_INVALID_VALUE ”错误。

谁能帮我解决这个问题?如果采样器在 opengl 3.1 中不可用,为什么我可以毫无问题地使用 glGenSamplers?

我可以做些什么来提供向后兼容性?我猜我唯一的选择是在每次使用纹理进行渲染时设置纹理参数,如果采样器不可用的话?

最佳答案

有两种可能:

  1. 您的显卡/驱动程序支持 ARB_sampler_objects,在这种情况下,支持该功能也就不足为奇了。请随意使用它。
  2. 无论如何,该功能都存在。在这种情况下,虽然听起来很奇怪,但您不允许使用它。

检查 glGetStringi(GL_EXTENSION, ...) 是否返回某个索引处的采样器对象扩展。仅允许使用实现宣传为“支持”的扩展功能。
如果您在没有支持的情况下找到某些功能,它们可能仍然可以工作,但也可能不工作。它是未定义的。

请注意,虽然您通常希望函数在来自 ARB 扩展时被命名为 glGenSamplersARB,但这里不是这种情况,因为这是一个提供选定功能的“向后扩展”在无法提供该更高版本的全部功能的硬件的更高版本中完全相同

(关于错误代码,请注意 Brett Hale 的评论)

关于OpenGL - opengl 3.1 中的采样器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21253992/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com