【发布时间】:2014-01-21 09:27:32
【问题描述】:
我在我的应用程序中经常使用采样器,并且一切正常。
问题是,我只能在笔记本电脑上使用 opengl 3.1。根据文档,采样器仅适用于 opengl 3.3 或更高版本,但在这里我有点困惑。
我可以很好地使用“glGenSamplers”,不会产生错误,而且采样器 ID 似乎也很好。在有效纹理上使用“glBindSampler”时,我收到“GL_INVALID_VALUE”错误。
谁能帮我解决这个问题?如果 opengl 3.1 中没有采样器,为什么我可以毫无问题地使用 glGenSamplers?
我可以做些什么来提供向后兼容性?我猜我唯一的选择是在每次使用纹理进行渲染时设置纹理参数,如果采样器不可用?
【问题讨论】:
-
采样器绑定到纹理单元,而不是纹理名称/对象。
-
为了向后兼容,只需像 API 最初设计的那样设置每个纹理对象的采样器状态。不要在每次使用纹理时都设置它,除非您必须更改它(例如,需要与上次使用 that 纹理时不同的过滤器模式)。