我正在从传统/立即OpenGL迁移到现代OpenGL (核心配置文件)的项目中工作。在旧版OpenGL实现中,我们使用双精度,即在glVertexPointer中使用GL_DOUBLE,使用glLoadMatrixd等。但是,在现代OpenGL中,只有OpenGL/GLSL 4.0+支持双精度。
为什么旧版OpenGL支持双精度而更新的OpenGL不支持呢?大多数图形卡都不支持双精度,传统OpenGL如何处理双精度?
我在网上找不到任何信息,或者一些答案太旧了。
目前的图形卡是否支持双精度?我应该使用OpenGL 4.0吗?
为什么旧版OpenGL支持双精度而更新的OpenGL不支持呢?大多数图形卡都不支持双精度,传统OpenGL如何处理双精度?
我在网上找不到任何信息,或者一些答案太旧了。
目前的图形卡是否支持双精度?我应该使用OpenGL 4.0吗?
GL_DOUBLE
没有与C++的double
相等,我会感到非常惊讶。 - Jesper Juhldouble
,但它们往往拥有较少的核心可以执行双精度计算,使其几乎无法用于性能会受到巨大打击。 - ALX23zGL_DOUBLE
应该等同于 c++ 的double
,因为传统的 OpenGL 使用 C++ 的double
。然而,现代 OpenGL(不包括 OpenGL 4.0+)没有针对 double 的 API,即glUniform
不接受 double,你也不能在着色器中定义 double。 - Tao Chen