gpt4 book ai didi

opengl - 是否可以将 OpenCV GpuMat 绑定(bind)为 OpenGL 纹理?

转载 作者:太空宇宙 更新时间:2023-11-03 20:41:24 27 4
gpt4 key购买 nike

我没能找到任何引用,除了:

http://answers.opencv.org/question/9512/how-to-bind-gpumat-to-texture/

其中讨论了 CUDA 方法。

理想情况下,我想用 cv::gpu::GpuMat 的内容更新 OpenGL 纹理,而不用复制回 CPU,也不直接使用 CUDA(尽管我认为这可能是在添加此功能之前是必需的)。

最佳答案

OpenCV 支持 OpenGL。请参见 opencv2/core/opengl_interop.hpp 头文件。您可以将 GpuMat 的内容复制到 Texture 中:

cv::gpu::GpuMat d_mat(768, 1024, CV_8UC3);
cv::ogl::Texture2D tex;
tex.copyFrom(d_mat);
tex.bind();
// draw something

您还可以使用 cv::ogl::Buffer 类。它是 OpenGL 缓冲存储器的包装器。此内存可以映射到 CUDA 内存而无需内存复制:

cv::ogl::Buffer ogl_buf(1, 1000, CV_32FC3);
cv::gpu::GpuMat d_mat = ogl_buf.mapDevice();
// fill d_mat with CUDA
ogl_buf.unmapDevice();
// use ogl_buf in OpenGL
ogl_buf.bind(cv::ogl::Buffer::ARRAY_BUFFER);
glDrawArray(...);

关于opengl - 是否可以将 OpenCV GpuMat 绑定(bind)为 OpenGL 纹理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18086519/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com