【问题标题】:Will i use the power of GPU when using a OpenGL program?使用 OpenGL 程序时,我会使用 GPU 的强大功能吗?
【发布时间】:2011-10-16 22:16:11
【问题描述】:

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

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

【问题讨论】:

    标签: opengl gpu


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 你的意思是只有图形库函数实际上在使用 GPU,其他用户提供的代码在 CPU 上运行,对吧?
    • 是的,完全正确。 gl* 函数本身仍然是 C 函数,但它们将系统总线上的命令发送到显卡,然后由显卡进行渲染。
    • 现在我明白为什么需要 OpenCL 了,感谢您提供的详细信息!
    • 我已经扩展了我的答案,提供了有关 CPU 和 GPU 之间关系的更多信息。
    猜你喜欢
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 2021-07-02
    相关资源
    最近更新 更多