简而言之,我正在处理的代码使用OpenGL将数据(存储为double)表示为某些几何图形的颜色。然后,在顶点之间使用默认的颜色阴影,然后在几何图形上对颜色进行采样,以查看不同像素处的值并将其转换回我的数据。目前,它是使用1D纹理映射完成的,因此我绘制和采样回的任何值都可以精确地放置在比例尺上。但是,由于我正在使用的数据存储为双精度数据,所以当将所有绘制和采样回的值映射到14位纹理贴图上时,会损失很多精度。
因此,为解决该问题,现在我使用浮点颜色实现代码。 我正在使用带有GL_RGBA32F renderbuffer颜色附件的FBO。我不了解的是如果我使用glColor3d和glColor3f设置顶点的颜色会发生什么变化。 如果我正确理解的话,使用单精度浮点渲染缓冲区,我为RGB采样的值基本上将是GLfloat类型,而不是GLdouble。
还有,我有什么方法可以配置渲染缓冲区,以便可以使用GLdouble颜色值进行绘制并可以采样回GLdouble值?看看OpenGL 4.5 spec p198,没有任何彩色格式的每个色块通道的精度都超过32f。据我了解,双精度色彩是相当现代的技术,仅在较新的系统上受支持,这只会使我对glColour3d的存在感到困惑。