Więc tutaj jest mój zrozumienie, może nie w 100% poprawne, i przepraszam za mój brak matki-lang-angielskim.
GpuMat
używa Globalna pamięć. Jednak tekstury OpenGL znajdują się w pamięci tekstur, która jest specjalnie zaprojektowana dla procesorów graficznych GPU (nie rdzeni CUDA). Tekstura memów nie jest uporządkowana jak zwykle liniowe tablice 2D/3D, może użyć pewnej wartości Space Filling Curve, aby uporządkować swoją zawartość, aby zoptymalizować prędkość pamięci podręcznej tekstury. W ten sposób nie można uzyskać wskaźnika urządzenia do tekstury. Możesz uzyskać dostęp do Texture Mem bezpośrednio w CUDA poprzez Texture Fetch (tylko do odczytu) lub Surface R/W.
Obecna implementacja OpenCV wydaje się nie używać funkcji cuda/powierzchni. Musisz skopiować teksturę z pamięci globalnej, aby powiązać je jako GpuMat
s. Cóż, nie jest to rozwiązanie "wiążące".
This thread opisuje pisanie podejścia CUDA do tekstur OpenGL.
Albo czekać na OpenCV do wdrożenia nowej funkcji, lub czekać nową architekturę GPU NVIDIA ujednolicenie Texture Mem oraz globalny Mem, czy czekać ktoś wynalazł specjalne urządzenie EMP włamać te wspomnienia ... XD