使用OpenGL程序时我会使用GPU的强大功能吗?

时间:2011-10-16 12:15:46

标签: opengl gpu gpu-programming

我有一个非常古老的ATI HD 3400显卡,它不支持OpenCL,所以我想知道我是否可以真正使用ATI催化剂驱动程序提供的OpenGL库?

如果我的算法在glutDisplayFunc ( displayFunc )中运行,即displayFun (),那么它实际上是在耗费CPU功率还是GPU功耗?

1 个答案:

答案 0 :(得分:3)

GLUT只是一个管理平台特定窗口和GL上下文创建的库。您传递给glutDisplayFunc的函数仅由GLUT在您运行的平台的适当时间和上下文中调用;它不是在GPU上执行的。

不可能将您以正常方式编译的代码作为GPU上运行的较大程序的一部分。

然而,在显示功能内部运行的单个图形操作当然会在GPU上执行渲染; CPU仍在计算要执行的图形操作,但实际上并未呈现结果。每个gl函数都是普通的CPU函数,但它的作用是通过系统总线向您的图形卡发送命令,然后执行实际渲染。

此外,这些操作是异步的;在让程序继续运行之前,gl函数不会等待GPU完成操作。这很有用,因为你的CPU和GPU都可以同时工作 - GPU绘制图形,而CPU则计算出要绘制的图形。另一方面,如果你确实需要在另一个方向进行通信 - 例如glReadPixels - 那么CPU必须等待GPU赶上。这也是glFlushglFinish之间的差异。