Ebbene ecco la mia comprensione, forse corretto non al 100%, e ci scusiamo per il mio non-madre-lang-inglese.
GpuMat
utilizza Global Memory. Tuttavia, le trame OpenGL risiedono nella memoria di trama , appositamente progettata per l'hardware di trama della GPU (non per i nuclei CUDA). Le texture mem non sono organizzate come normali array 2D/3D lineari, ma è possibile utilizzare determinati Space Filling Curve per organizzare il proprio contenuto in modo da ottimizzare la velocità della cache della trama. Pertanto non è possibile ottenere un puntatore del dispositivo su Texture. È possibile accedere a Texture Mem direttamente in CUDA tramite Texture Fetch (sola lettura) o Surface R/W.
L'implementazione di OpenCV presente non sembra utilizzare la feature di struttura/superficie di cuda. Devi copiare dalle trame alla memoria globale per legarli come GpuMat
s. Beh, non proprio una soluzione "vincolante".
This thread descrive un approccio CUDA che scrive su trame OpenGL.
O aspettare che OpenCV per implementare la nuova funzione, oppure attendere la nuova architettura GPU NVIDIA unificare Texture Mem e Global Mem, o aspettare qualcuno inventare un dispositivo di EMP speciale per incidere questi ricordi ... XD