1

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

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

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

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

在渲染到“拾取”帧缓冲区时,我是否需要停止在主循环中绘图?还是我缺少一些东西可以使这成为可能?

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

4

2 回答 2

0

“不”。

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

于 2010-11-04T21:15:48.107 回答
0

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

于 2010-11-04T20:23:12.427 回答