0

简而言之,我正在处理的代码使用 OpenGL 将数据(存储为双精度数据)表示为某些几何图形的颜色。使用顶点之间的默认颜色阴影,然后对几何图形上的颜色进行采样,以查看不同像素处的值并将它们转换回我的数据。目前它是使用 1D 纹理映射完成的,这样我绘制和采样的任何值都可以精确地定位在比例尺上。然而,由于我正在使用的数据存储为双精度数据,因此当所有绘制和采样的值都映射到 14 位纹理贴图上时,会丢失很多精度。

所以为了解决这个问题,现在我正在使用浮点颜色来实现代码。我正在使用带有 GL_RGBA32F 渲染缓冲区颜色附件的 FBO。我不明白的是,如果我使用 glColor3d 与 glColor3f 设置顶点的颜色会发生什么变化。如果我理解正确,使用单精度浮点渲染缓冲区,我为 RGB 采样的值基本上是 GLfloat 类型,而不是 GLdouble。

另外,有什么方法可以配置我的渲染缓冲区,以便我可以使用 GLdouble 颜色值进行绘制并能够采样回 GLdouble 值?查看OpenGL 4.5 规范 p198,没有任何颜色格式的每个颜色通道的精度超过 32f。据我了解,双精度颜色是相当现代的技术,只支持较新的系统,这只会让我对 glColour3d 的存在更加困惑。

4

0 回答 0