新手学习cuda想要用cuda与opengl交互,想使用PBO(像素缓冲区对象)的方式与opengl交互。自己看着cuda的官方示例一点一点研究出来了。
在cuda的文件夹里可以找到大量的cuda示例,可以提供给我们学习。我的保存在C:\ProgramData\NVIDIA Corporation\CUDA Samples,你可以根据你的cuda的安装位置找到CUDA Samples文件夹。在2_Graphics文件夹里可以找到simpleGL和simpleTexture3D文件夹,这两个都是与opengl交互的示例,simpleGL是vbo方式,simpleTexture3D是本文所说的pbo方式。
simpleTexture3D是一个使用cuda来显示texture(纹理贴图)的程序。opengl使用双缓冲的办法来防止画面撕裂花屏(不明白双缓冲的可以百度,网上这方面的资料很多),opengl的双缓冲会建立一个叫pbo二维数组,用于保存已经绘制好的图像。pbo是一个二维数组,数组的两个下标分别对应着屏幕的opengl窗口上的x轴和y轴的像素,数组中保存着这个像素的颜色值(r g b)和深度值(w),深度值在本文中用不上,有兴趣的可以去网上查资料。
simpleTexture3D程序把texture文件读取出来保存到一个二维数组中,再把这个二维数组保存到opengl的PBO的缓冲文件中。这个程序有一些长,看着有一些头疼,但是一点一点的来还是很容易看懂的。</