从版本字符串中提取 OpenGL 版本
extract opengl version from version string
我试图获取当前的opengl verson。
glGetString(GL_VERSION)
回报
"4.6.0 NVIDIA 391.01"
std::string strVersion = (const char*)glGetString(GL_VERSION);
strVersion = strVersion.substr(0, strVersion.find(" "));
float number = std::atof(strVersion.c_str());
浮点数 = 4.59999990
为什么浮点数不是 4.6.0?
为什么你没有得到第三个数字
std::atof
将采用尽可能多的字符来表示十进制数。那是4.6
.下一个点不能是数字的一部分,因为没有带有两个点的十进制数这样的东西。十进制数只有一个点,用于分隔整数和小数部分。
为什么你会得到 4.59999990 而不是 4.6
因为浮点数不能存储整数和小数部分的任何可能组合。它们存储信息的空间有限,因此它们始终只是近似值。看看浮点数学坏了吗?。
如何获取版本
版本不是数字。该版本由三个数字组成,而不是一个:4
,6
和0
。它们是整数,而不是十进制数。因此,您只需将版本处理为字符串:
if (strVersion == "4.6.0")
或者您必须将其分成三部分并分别获取这些整数值。请参阅使用令牌拆分 C++ std::string 了解如何执行此操作。
相关文章:
- OpenGL 在 VMWare Fusion 版本 10.1.3 上安装的虚拟机 (Ubuntu 16.04) 上崩溃
- 在上下文初始化之前查询支持的最高 OpenGL 版本?
- 从版本字符串中提取 OpenGL 版本
- opengl32.lib如何在Windows(仅1.1版本)上工作?它是否真正实现了OpenGL函数
- OpenGL 版本不等于支持的着色器版本
- CEGUI:无法获取桌面 OpenGL 版本
- OpenGL 编译使用不正确的版本
- 使用 C# 获取 OpenGL 版本的最简单方法
- Mac上的OpenGL版本
- 使用 SDL2 指定 OpenGL 版本
- OpenGL着色器版本错误
- OpenGL 着色器版本编译错误
- 使用 OpenGL 版本 3+ 呈现文本/UI
- 为什么我不能在这个虚假的OpenGL上下文中检查OpenGL版本
- OpenGL/ES 2.0及更高版本:如何将多个着色器文件编译在一起
- OS X 上的 OpenGL 版本支持
- 在 c++ 中强制使用 Opengl 2.0 及更高版本
- glTexImage2D 在 OpenGL 3 及更高版本的 GLUT/FreeType 示例中失败
- 如何设置 OpenGL 版本
- 无法在 QGLWidget 中设置所需的 OpenGL 版本