So erstellen Sie ein cvopengltextureref aus einer OpenGL -Textur
-
24-10-2019 - |
Frage
Ich habe ein kleines Projekt -Setup mit OpenGL und Core Video. Ich rendere einen FBO und benutze diese als Textur für andere Teile des Programms, aber es wäre schöner, diese Texturreferenz in Form eines CvopenglExtureref zu übergeben. Ich kann jedoch keine nützliche Verdoppelung finden, wie dieser Datentyp aus einem Texturnamen und Ziel erstellt wird (ohne Daten zu kopieren).
Lösung
Wie ich es verstehe, zu lesen Daten aus einem OpenGL -Kontext müssen Sie a verwenden CVOpenGLBufferRef
(was eine Art von Art von ist CVImageBufferRef
). Die Dokumentation behauptet, dass diese PBUFFERS, aber ich würde vermuten, dass sie mit FBOs arbeiten. Ich habe es nicht versucht.
Zu machen die Daten von a CVOpenGLBufferRef
, Sie müssen es mit a auf eine Textur ziehen CVOpenGLTextureCacheRef
, was einen Satz von verwaltet CVOpenGLTextureRef
s.
Wenn Sie nur den unmodifizierten Puffergehalt zeichnen möchten, ist es wahrscheinlich effizienter, innerhalb von OpenGL zu arbeiten. (Beachten Sie, dass Sie bei Bedarf Texturen/Puffer zwischen Kontexten teilen können.)
Wenn Sie Puffer zwischen den Kontexten mischen müssen und nicht all diese flauschige Abstraktion und hilfreiche Dokumentation, die Sie mit Kernvideo erhalten, möchten, möchten Sie sich möglicherweise in iOSurface und Cgliosurface befassen.