возможно ли выполнить рендеринг в объект кадрового буфера вне основного цикла рендеринга - PullRequest
1 голос
/ 04 ноября 2010

Я использую отдельный объект Framebuffer для выбора цвета 2D объектов в OpenGL. мне любопытно, можно ли рисовать только в фреймбуфере и при необходимости читать цвет.

То, что я делаю сейчас, находится в основном цикле рендеринга. Я рисую сцену в основном буфере кадров, а затем рендерирую только выбираемые объекты в "выбирающий" кадровый буфер.

когда пользователь щелкает мышью, он связывает кадровый буфер "выбора" и считывает пиксель, и я знаю, какой объект выбран. проблема в том, что мне нужен только «выбирающий» кадровый буфер, когда пользователь щелкает мышью, поэтому каждый кадр неэффективен.

Я попытался выполнить рендеринг в «выбирающий» фрейм-буфер, когда пользователь щелкает мышью и затем читает напрямую, но все, что я получаю, - это белый (цвет фона, а не цвет, чтобы сказать, какой это объект). Рисование «выбирающего» фрейм-буфера просто показывает всю вещь в белом цвете, как будто на самом деле ему вообще ничего не отображалось.

мне нужно остановить рисование в главном цикле при рендеринге в кадровый буфер "выбора"? или мне чего-то не хватает, что сделало бы это возможным?

РЕДАКТИРОВАТЬ: я пытался не рисовать в главном цикле во время рендеринга в кадровый буфер выбора, и это тоже не сработало.

Ответы [ 2 ]

0 голосов
/ 05 ноября 2010

"Нет".

Но вы можете использовать несколько графических процессоров (если они у вас есть). Здесь или здесь Вы можете найти спецификацию OpenGL; драйвер должен поддерживать расширение * WGL_NV_gpu_affinity * или * AMD_gpu_association *.

0 голосов
/ 04 ноября 2010

Вы должны проверить, что вы сделали свой контекст GL текущим, используя wglMakeCurrent или glXMakeCurrent. Кроме того, это должно быть сделано в том же потоке, поскольку только один поток может иметь текущий контекст.

...