文章目录

  • 0. BASE
  • 1. 套路

0. BASE

cuda用于通用计算。
openGL用于渲染。

可以使用VBO、VPO用于二者之间的相互操作。
本文以VBO为例。

1. 套路

s1:在OpenGL中创建VBO对象

glGenBuffers(1, vbo);
glBindBuffer(GL_ARRAY_BUFFER, *vbo);
glBufferData(GL_ARRAY_BUFFER, size, 0, GL_DYNAMIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);

s2: 注册VBO到cuda(注意,openGL要先断开该VBO的绑定,才可以注册成功)

struct cudaGraphicsResource *cuda_vbo_resource;
cudaGraphicsGLRegisterBuffer(&cuda_vbo_resource, *vbo, cudaGraphicsMapFlagsWriteDiscard);

s3:映射VBO到cuda的显存地址

cudaGraphicsMapResources(1, &cuda_vbo_resource, 0);
cudaGraphicsResourceGetMappedPointer((void**)&dptr, &num_bytes, cuda_vbo_resource);

s4:调用cuda的kernel进行计算

launch_kernel(dptr, mesh_width, mesh_height, animTime);

s5:计算完毕,解除映射

cudaGraphicsUnmapResources(1, &cuda_vbo_resource, 0);

s6: 从cuda解除该VBO的注册

cudaGraphicsUnregisterResource(cuda_vbo_resource);

s7:删除VBO

glBindBuffer(GL_ARRAY_BUFFER, *vbo);
glDeleteBuffers(1, vbo);

一般来说,在简单的程序中,s1、s2可以放到构造函数中。
s6、s7放到析构函数中。

在注册VBO对象到cuda的时候,openGL要先断开该VBO的绑定,才可以注册成功。

【cuda】cuda与OpenGL互操作相关推荐

  1. 成功解决torch\cuda\__init__.py“, line 208, in check_error raise Cuda Error(res) torch.cuda.Cuda Error: C

    成功解决torch\cuda\__init__.py", line 208, in check_error raise Cuda Error(res) torch.cuda.Cuda Err ...

  2. linux eclipse cuda,CUDA Linux eclipse intel Mosix

    一.CUDA on linux Redhat AS 5 后来升级到为centos(根据redhat AS开源程序做的学生平台的server) 1.安装redhat AS的时候最好别选择xen支持,因为 ...

  3. OpenGL与CUDA互操作方式总结

    一.介绍 CUDA是Nvidia推出的一个通用GPU计算平台,对于提升并行任务的效率非常有帮助.本人主管的项目中采用了OpenGL做图像渲染,但是在数据处理方面比较慢,导致帧率一直上不来.于是就尝试把 ...

  4. opencv,opengl,osg,vulkan,webgL,opencL,cuda

    OpenCV OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux.Windows.Android和Mac OS操作系统上. 它轻量级而且高效--由一系 ...

  5. 【转载】cuda编程入门

    目录 1.什么是CUDA 2.为什么要用到CUDA 3.CUDA环境搭建 4.第一个CUDA程序 5. CUDA编程 5.1. 基本概念 5.2. 线程层次结构 5.3. 存储器层次结构 5.4. 运 ...

  6. GPU和CUDA基础介绍

    转载自http://blog.csdn.net/fengbingchun/article/details/54691225 一.GPU简介 1985年8月20日ATi公司成立,同年10月ATi使用AS ...

  7. OpenCL与CUDA,CPU与GPU

    OpenCL OpenCL(全称Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式.免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计 ...

  8. NVIDIA Optimus技术和CUDA

    Nvidia称Optimus是一个革命性的技术,它可以延长笔记本电脑续航时间,同时获得很好的性能.这种技术使得硬件能够自己选择使用那个显卡来计算.一般使用GPU计算的应用.视频.3D游戏等会被安排在高 ...

  9. GPU — CUDA 编程模型

    目录 文章目录 目录 GPGPU CUDA 编程模型 CUDA 的架构 CUDA 的工作原理 Grid.Block.Thread Warp GPGPU GPU 起初是用来处理图像的,但是后来人们发现其 ...

最新文章

  1. linux 生成随机数命令
  2. java压缩----使用sun JDK压缩--中文的文件名会是乱码
  3. PyTorch深度学习实践03
  4. 消除左递归c++代码_【每日算法Day 85】图解算法:一行代码解决约瑟夫环的变体...
  5. 中山纪念中学培训15天总结
  6. 【数学】Natasha, Sasha and the Prefix Sums(CF1204E)
  7. LeetCode 683. K 个空花盆(set/滑动窗口)
  8. python获取mac窗口坐标_[代码全屏查看]-Python3根据IP地址获取MAC地址
  9. 【Webpack】TypeError: Cannot read property ‘tap‘ of undefined at HtmlWebpackPlugin.
  10. python一年一度的校园好歌声_歌声满校园
  11. android9.0 framewrok.jar push到system/framework不起作用,解决方式
  12. 微擎模块-微信门禁小区物业版(微信开门)
  13. 什么是3D建模?一文帮助小白了解建模全流程!
  14. 阿里巴巴高并发架构到底多牛逼?是如何抗住淘宝双11亿级并发量?
  15. uni-app 开发小程序,使用到u-charts.js时会出现弹框或下拉框部分与图标重叠的情况(还有在解决过程中出现 vasToTempFilePath: fail canvas is empty)
  16. 2g内存用linux的哪个版本,Linux 下安装sql server 时 2G内存限制的最新(2019-08-15) 解决方案...
  17. 怎么找回xmind意外关机的文件_Xmind 导图保存丢失怎么找回?
  18. java返回fail,clickhouse分析:jdbc返回failed-to-respond问题排查
  19. 网御星云防火墙端口映射配置
  20. jenkins-凭证管理

热门文章

  1. 腾讯计划推出搜狗输入法鸿蒙版;全球首款Web3手机售价2.38万起,全球预约人数超20万|极客头条
  2. 计算机组成原理中的诸如4k*8位,8K*8位之类的是什么意思
  3. C/C++ 通过CRC32实现反破解
  4. win10 映像备份方法
  5. Kam1n0能实现哪些功能?(1)
  6. 计算机技术发展特点分为多极化,新形势下计算机技术的发展趋势研究
  7. 室内覆盖将成为5G连接无线和有线网络的关键
  8. 实况2012里的电梯球的踢法(手柄)
  9. group by详解
  10. 京东毫秒级热key探测框架设计与实践,已完美支撑618大促