【问题标题】:How do I get a graphics program I have written in C++ to render using the GPU instead of the CPU?如何让我用 C++ 编写的图形程序使用 GPU 而不是 CPU 进行渲染?
【发布时间】:2015-04-23 15:01:42
【问题描述】:

我目前正在用 C++ 编写一个简单的图形应用程序,它只显示一个房间和房间中的对象。我想使用计算机的 GPU 进行此渲染,但是如何在具有广泛兼容性的情况下执行此操作(意味着 Nvidia、Intel 和 ATI,旧卡和新卡)。我的计算机使用 AMD/ATI 芯片组(而不是主板上的集成显卡,我将 GPU 集成到处理器芯片中,称为 APU 而不是 CPU,以及专用显卡,也称为 ATI)。但是,运行该程序的计算机很可能有 Intel 或 Nvidia 的集成显卡,或者有 Nvidia 卡,所以我希望它能够使用任何显卡,但不使用 CPU。我正在为这个应用程序使用 glut 库

更新:真正的问题是教授似乎认为程序需要额外的代码才能使用显卡而不是处理器来渲染图形。据我所知,所有显卡都支持opengl。

【问题讨论】:

  • 将鼠标悬停在您的标签opengl 上即可获得一个答案。
  • 好的,澄清一下。原来我教授的意思是使用着色器来绘制东西而不是形状。更有意义,但仍然难以实现。

标签: c++ opengl gpu glut


【解决方案1】:

通过使用将绘图调用定向到 GPU 驱动程序的抽象 API。 OpenGL 和 Direct3D 就是这样的 API。 OpenGL 和 DirectX 都不是库。是的,您链接到一些名为 libGL.soopengl32.dlld3dxxx.dll 的库,但这些只是与 GPU 的驱动程序对话,然后它将引导 GPU 到通过 API 请求的任何内容。

或者换句话说:如果您的程序使用 OpenGL 或 DirectX 并链接到系统上的标准接口库(这是默认情况下发生的情况),那么它可以与任何 GPU 一起使用,只要它的驱动程序支持相关 API。

【讨论】:

  • 奇怪,因为我的教授基本上是在说需要添加额外的代码行才能使用 GPU 而不是 CPU。
  • 您的教授有没有机会谈论将 GPU 用作协处理器进行数值计算的程序(而不是更传统的使用 GPU 渲染图形供用户查看)?
  • @cluemein:教授不是无穷无尽的智慧之泉。很多时候教授会散布很多错误信息,如果他们讲授的主题不是他们主要研究的重点(例如,系统设计教授被分配了计算机图形学的讲座,或者他的讲座达到了那一章关于图形架构)。 永远不要盲目相信你的教授,总是做你自己的研究。如果您在他们的讲座中发现缺陷,请在他们的咨询时间与他们会面并指出这一点。
  • 不幸的是,我正在处理的部分任务要求我让程序使用 GPU 渲染事物。这实际上就是它所说的,使用 GPU 而不是 CPU 进行程序渲染的 10 分。
  • @cluemein:你的程序已经使用了 OpenGL 和 GLUT?那么没有你可以如何将它强制到某个实现上。如果您针对本机操作系统进行编程,则可以通过选择不支持 GPU 的像素格式来欺骗 OpenGL 接口库以使用软件光栅化器后备。否则没办法强求。你能把作业贴在某个地方吗?
猜你喜欢
  • 1970-01-01
  • 2015-02-24
  • 2016-02-08
  • 1970-01-01
  • 1970-01-01
  • 2017-04-26
  • 1970-01-01
  • 2016-10-28
  • 2012-05-29
相关资源
最近更新 更多