我在我的应用程序中经常使用采样器,一切都运行正常.
问题是,我只能在笔记本电脑上使用opengl 3.1.根据文档,采样器仅在opengl 3.3或更高版本可用,但这里我有点困惑.
我可以很好地使用'glGenSamplers',不会产生错误,并且采样器ID也很好.在有效纹理上使用'glBindSampler'时,出现'GL_INVALID_VALUE'错误.
任何人都可以为我清除这个吗?如果opengl 3.1中没有采样器,为什么我可以毫无问题地使用glGenSamplers?
我该怎么做才能提供向后兼容性?我猜我唯一的选择是每次纹理用于渲染时设置纹理参数,如果采样器不可用?
有两种可能性:
ARB_sampler_objects,在这种情况下,支持该功能并不令人惊讶.随意使用它.检查是否glGetStringi(GL_EXTENSION, ...)在某个索引处返回采样器对象扩展.仅允许使用实现广告为"支持"的扩展的功能.
如果你发现一些功能,尽管没有支持,他们可能会工作,但他们可能不会.这是未定义的.
请注意,虽然您通常希望函数在glGenSamplersARB来自ARB扩展时被命名,但这不是这种情况,因为这是一个"向后扩展",它提供了在硬件上的更高版本中相同的功能.无法提供该更高版本的全部功能.
(关于错误代码,请注意Brett Hale的评论)
| 归档时间: |
|
| 查看次数: |
302 次 |
| 最近记录: |