opengl - 以编程方式确定硬件是否支持 OpenGL 函数

标签 opengl graphics hardware hardware-acceleration

我对 OpenGL 很陌生,所以也许这是显而易见的,但是是否可以确定给定显卡是否支持特定功能?出现此问题是因为我使用的是一台配备 ATI Radeon 9550 显卡的旧计算机,运行 Lubuntu 12.10,发现它不支持使用 dFdx 和 dFfy。我能够解决这个问题,但现在我很好奇是否可以找出是否由于此类问题而发生了故障,并据此采取行动,可能使用替代方法等。

最佳答案

您可以使用glGetString(GL_VERSION)glGetInteverv(GL_MAJOR_VERSION, …)检查支持的OpenGL版本; glGetInteverv(GL_MINOR_VERSION, …);.对于 OpenGL-3 及更高版本,OpenGL 主要版本直接对应于硬件功能。

对于旧版本,事情并不那么严格,并且由于 OpenGL 的抽象设备模型,您无法真正“查询”硬件功能。您可以检查支持哪些扩展,这是支持功能的良好指标,因为许多 ARB 扩展已将其纳入核心功能。如果当前 OpenGL 版本的某个功能所基于的扩展不受支持,则可能会模拟核心功能。

我知道这非常模糊和不稳定,但事实就是如此。唯一的其他选择是保留 GL_RENDERER 字符串的数据库并与之匹配。

关于opengl - 以编程方式确定硬件是否支持 OpenGL 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15960463/

相关文章:

c++ - OpenGL/过剩 : Making the camera rotate around X axis with arrow keys?

c++ - 让火浮起来

c# - QuickFill/洪水填充算法

windows - 在 Windows 下检索 USB 键盘的序列号

hardware - 我正在考虑 Redis 支持的 Web 应用程序,但我不确定 Redis 的硬件要求,或者 Redis "works"究竟如何?

linux - 如何使用linux内核和硬件加速绘制三角形?

java - 使用 VBO 的 JOGL 可能存在内存泄漏

java - 在添加到 jcomponent 的容器上绘制

android - 从 API 级别 < Android 26 (Oreo) 的 RGB 值创建颜色对象

android - 如何在 Android 中为硬件按钮设置事件处理程序?