是否可以在主渲染循环之外渲染到帧缓冲对象

时间:2010-11-04 20:17:58

标签: opengl colors framebuffer picking

我在opengl中使用单独的帧缓冲对象来拾取2d对象。我很好奇是否可以只画到帧缓冲区并在需要时读取颜色。

我现在正在做的是在主渲染循环中,我将场景绘制到主帧缓冲区,然后将可选对象渲染到“拾取”帧缓冲区。

当用户点击鼠标时,它会绑定“拾取”帧缓冲并读取像素,我知道选择了哪个对象。这个问题是当用户点击鼠标时我只需要“拾取”帧缓冲,所以每帧都这样做效率很低。

我尝试渲染到“拾取”帧缓冲区,当用户点击鼠标然后直接读取但我得到的只是白色(背景颜色而不是颜色告诉我它是哪个对象)。绘制“拾取”帧缓冲区只是将整个事物显示为白色,就像根本没有实际呈现它一样。

我是否需要在渲染到“拾取”帧缓冲区时停止在主循环中绘制?或者是否有一些可以使这成为可能的东西?

编辑:我尝试在渲染到拾取帧缓冲区时没有在主循环中绘制,但这也没有用。

2 个答案:

答案 0 :(得分:0)

您需要使用wglMakeCurrentglXMakeCurrent检查您的GL上下文是否为当前上下文。此外,它必须在同一个线程中完成,因为只有一个线程可以拥有当前上下文。

答案 1 :(得分:0)

“否”。

但是你可以使用多个GPU(如果你有的话)。 Herehere您可以找到OpenGL规范;驱动程序必须支持* WGL_NV_gpu_affinity *或* AMD_gpu_association * extension。