【cuda】cuda与OpenGL互操作
文章目录
- 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互操作相关推荐
- 成功解决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 ...
- linux eclipse cuda,CUDA Linux eclipse intel Mosix
一.CUDA on linux Redhat AS 5 后来升级到为centos(根据redhat AS开源程序做的学生平台的server) 1.安装redhat AS的时候最好别选择xen支持,因为 ...
- OpenGL与CUDA互操作方式总结
一.介绍 CUDA是Nvidia推出的一个通用GPU计算平台,对于提升并行任务的效率非常有帮助.本人主管的项目中采用了OpenGL做图像渲染,但是在数据处理方面比较慢,导致帧率一直上不来.于是就尝试把 ...
- opencv,opengl,osg,vulkan,webgL,opencL,cuda
OpenCV OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux.Windows.Android和Mac OS操作系统上. 它轻量级而且高效--由一系 ...
- 【转载】cuda编程入门
目录 1.什么是CUDA 2.为什么要用到CUDA 3.CUDA环境搭建 4.第一个CUDA程序 5. CUDA编程 5.1. 基本概念 5.2. 线程层次结构 5.3. 存储器层次结构 5.4. 运 ...
- GPU和CUDA基础介绍
转载自http://blog.csdn.net/fengbingchun/article/details/54691225 一.GPU简介 1985年8月20日ATi公司成立,同年10月ATi使用AS ...
- OpenCL与CUDA,CPU与GPU
OpenCL OpenCL(全称Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式.免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计 ...
- NVIDIA Optimus技术和CUDA
Nvidia称Optimus是一个革命性的技术,它可以延长笔记本电脑续航时间,同时获得很好的性能.这种技术使得硬件能够自己选择使用那个显卡来计算.一般使用GPU计算的应用.视频.3D游戏等会被安排在高 ...
- GPU — CUDA 编程模型
目录 文章目录 目录 GPGPU CUDA 编程模型 CUDA 的架构 CUDA 的工作原理 Grid.Block.Thread Warp GPGPU GPU 起初是用来处理图像的,但是后来人们发现其 ...
最新文章
- linux 生成随机数命令
- java压缩----使用sun JDK压缩--中文的文件名会是乱码
- PyTorch深度学习实践03
- 消除左递归c++代码_【每日算法Day 85】图解算法:一行代码解决约瑟夫环的变体...
- 中山纪念中学培训15天总结
- 【数学】Natasha, Sasha and the Prefix Sums(CF1204E)
- LeetCode 683. K 个空花盆(set/滑动窗口)
- python获取mac窗口坐标_[代码全屏查看]-Python3根据IP地址获取MAC地址
- 【Webpack】TypeError: Cannot read property ‘tap‘ of undefined at HtmlWebpackPlugin.
- python一年一度的校园好歌声_歌声满校园
- android9.0 framewrok.jar push到system/framework不起作用,解决方式
- 微擎模块-微信门禁小区物业版(微信开门)
- 什么是3D建模?一文帮助小白了解建模全流程!
- 阿里巴巴高并发架构到底多牛逼?是如何抗住淘宝双11亿级并发量?
- uni-app 开发小程序,使用到u-charts.js时会出现弹框或下拉框部分与图标重叠的情况(还有在解决过程中出现 vasToTempFilePath: fail canvas is empty)
- 2g内存用linux的哪个版本,Linux 下安装sql server 时 2G内存限制的最新(2019-08-15) 解决方案...
- 怎么找回xmind意外关机的文件_Xmind 导图保存丢失怎么找回?
- java返回fail,clickhouse分析:jdbc返回failed-to-respond问题排查
- 网御星云防火墙端口映射配置
- jenkins-凭证管理