在大学,我们已经介绍了OpenGL,并且's first time I' m正在使用它 . 到目前为止,我已经实现了像Sierpinski carpet之类的简单操作,我注意到大多数(固定和浮点)计算都是在CPU上执行的 . OpenGL是否提供了一些API,这些算法能够对GPU进行这些计算吗?
我知道,有OpenCL或CUDA这样的框架,但我想知道OpenGL是否可以使用GPU进行典型的图形计算,比如计算坐标 .
在大学,我们已经介绍了OpenGL,并且's first time I' m正在使用它 . 到目前为止,我已经实现了像Sierpinski carpet之类的简单操作,我注意到大多数(固定和浮点)计算都是在CPU上执行的 . OpenGL是否提供了一些API,这些算法能够对GPU进行这些计算吗?
我知道,有OpenCL或CUDA这样的框架,但我想知道OpenGL是否可以使用GPU进行典型的图形计算,比如计算坐标 .
3 回答
我会看一下GLSL,OpenGL着色语言 .
尽管@Jared说过,我认为你可以编程GPU来并行计算Sierpinski地毯,至少可以达到规定的迭代次数 . (在WebGL中尝试这将是一个有趣的项目 . )
Edit: 这是使用WebGL的Sierpinski地毯的GPU实现,它基于OpenGL ES 2.0并使用GLSL进行着色器编程 . 如果不相同,OpenGL实现将非常相似 .
要对此进行测试,请使用WebGL-enabled browser转到Shader Toy,然后将上述代码粘贴到"Source"窗口中 . 按Alt键输入:Presto!在我的笔记本电脑上,它没有很好的震动,但有一个图形加速卡,它运行在45-60帧/秒 .
为了获得截图中显示的背景纹理,我将此纹理用于输入下的单元0:http://www.iquilezles.org/apps/shadertoy/presets/tex3.jpg
正如您所看到的,我将lim(迭代级别数)设置为5 ...在我测试的分辨率下,接近子像素精度 .
所以你的问题的答案,“我想知道OpenGL是否可以使用GPU进行典型的图形计算,比如计算坐标,”肯定是的 . 从技术上讲,上面使用像素着色器,它计算颜色以 生产环境 Sierpinski地毯 . 如果您确实需要调整顶点的坐标,则可以使用顶点着色器 . 这个过程很相似 .
如果您按像素执行此操作,则必须将总线上的坐标发送到GPU,计算新坐标,然后将其发回,然后调用OpenGL命令绘制点等 .
使用着色器,您可能能够使用Sierpinski地毯,但分形是非常顺序的(至少是通过平均点后计算的典型方式) . 换句话说,您将失去使GPU具有吸引力的并行优势 .
正如其他人所说,你需要使用着色器 . 除了GLSL,您还可以使用Cg .