2011-01-21 2 views
0

Я использую OpenGL через OpenTK, и я передаю FramebufferObject в фоновом потоке. Теперь после каждого визуализированного фрейма я хочу отобразить (часть (ы)) FBO в одном или нескольких элементах OpenGL в моем пользовательском интерфейсе.OpenGL/OpenTK: отображение FBO в фоновом потоке в OpenGL-управлении

Как это работает?

ответ

1

У вас есть два варианта:

  • Если драйверы поддерживают совместное использование контекста, вы можете связать текстуру FBO над элементами управления OpenGL и показать, что непосредственно (BIND текстуру, делают квадроцикл, сделано). Просто и быстро - просто убедитесь, что вы синхронизируете рендеринг с дисплеем.
  • Если вашим драйверам нет, вам нужно будет прочитать результаты рендеринга в объект Bitmap (или его эквивалент) через GL.ReadPixels. Затем вы можете повторно загрузить их на другие элементы управления OpenGL в виде текстур или отобразить их непосредственно на элементах управления, отличных от OpenGL.

По умолчанию OpenTK всегда будет пытаться использовать контексты. К сожалению, драйверы Intel не поддерживают обмен контекстами, поэтому вы не можете использовать первый подход.

+0

Что было бы лучшим способом «синхронизировать рендеринг с дисплеем»? – Pygmy

+0

GraphicsContext.CurrentContext.VSync = true; –

 Смежные вопросы

  • Нет связанных вопросов^_^