Как создать CVOpenGLTextureRef из текстуры OpenGL - PullRequest
2 голосов
/ 27 апреля 2011

У меня есть небольшая настройка проекта с использованием OpenGL и Core Video.Я рендерим в FBO и использую это как текстуру для других частей программы, но было бы лучше передать эту ссылку на текстуру в виде CVOpenGLTextureRef.Но я не могу найти какую-либо полезную информацию о том, как создать этот тип данных из имени текстуры и цели (без копирования каких-либо данных).

1 Ответ

1 голос
/ 27 апреля 2011

Насколько я понимаю, для чтения данных из контекста OpenGL необходимо использовать CVOpenGLBufferRef (это тип CVImageBufferRef). В документации утверждается, что это pbuffers, но я думаю, они работают с FBO. Я не пробовал это.

Для рендеринга данных из CVOpenGLBufferRef, вам нужно нарисовать их в текстуру, используя CVOpenGLTextureCacheRef, который управляет набором CVOpenGLTextureRef s.

Если вы хотите только нарисовать немодифицированное содержимое буфера, возможно, более эффективно работать в OpenGL. (Обратите внимание, что вы можете совместно использовать текстуры / буферы между контекстами, используя группы общего доступа, если это необходимо.)

Если вам нужно перетасовать буферы между контекстами, и вам не нужна вся эта пушистая высокоуровневая абстракция и полезная документация, которые вы получаете с Core Video, вы, возможно, захотите изучить IOSurface и CGLIOSurface.

...