gpt4 book ai didi

c++ - 来自后台缓冲区的 glReadPixels。浮点精度问题

转载 作者:行者123 更新时间:2023-12-01 14:47:18 28 4
gpt4 key购买 nike

我正在尝试为我的颜色选择器获取颜色,但我得到了一个浮点值,该值与我存储的值不同。例如,我设置了 0.5,但我取了 0.498039(这是实数)。
我不构建任何 FBO 并直接从 GL_BACK 读取颜色:

glReadBuffer(GL_BACK);
glReadPixels(x, y, 1, 1, GL_RGB, GL_FLOAT, &color);
如何保存浮点值的精度?是否可以将 GL_FLOAT 更改为另一个可以节省精度的值?是否有可能获得大于 1.0 的 &color 数字?

最佳答案

精度受到帧缓冲区(后台缓冲区)精度的限制。此精度不能单独设置,并且(很可能)限制为每个 channel 8 位。其实Default framebuffer生成一次,当OpenGL窗口和OpenGL Context生成。
因此读取缓冲区到 32 位浮点目标是没有意义的,因为源缓冲区只有 8 位。
无论如何,可以将场景渲染到命名 Framebuffer ObjectRenderbuffer的彩色平面在哪里具有浮点格式(例如 GL_RGBA32F )。见 LearnOpenGL - Framebuffers .

关于c++ - 来自后台缓冲区的 glReadPixels。浮点精度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63043796/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com