【问题标题】:opengl fixed function uses gpu or cpu?opengl固定功能使用gpu还是cpu?
【发布时间】:2013-02-13 21:41:51
【问题描述】:

我有一个代码,它基本上使用 opengl 固定 func 管道绘制平行坐标。 该坐标有 7 个轴并绘制 64k 条线。所以输出很混乱,但是当我在具有英特尔 i5 proc、8gb ddr3 ram 的笔记本电脑上运行代码时,它运行良好。我的一个朋友在两个不同的系统中运行相同的代码,这两个系统都有英特尔 i7 和 8gb ddr3 ram 以及一个 nvidia gpu。在这些系统中,代码以快门运行,有时鼠标指针变得无响应。如果你们能给出一些想法为什么会发生这种情况,那将有很大的帮助。最初我认为它在这些系统中运行得更快,因为它们有一个专用的 gpu。我自己的笔记本电脑有 ubuntu 12.04,其他两个系统都有 ubuntu 10.x。

【问题讨论】:

  • 大概您为每个系统中的硬件安装了正确的驱动程序。检查 OpenGL 供应商字符串 glGetString(GL_VENDOR) 以查看真正执行渲染的人员。
  • 嗨,激进7,我得到了以下信息:供应商信息:NVIDIA Corporation 渲染器信息:GeForce GT 650M/PCIe/SSE2 GL 版本信息:4.3.0 NVIDIA 310.19

标签: opengl ubuntu-12.04 ubuntu-10.04


【解决方案1】:

固定功能管道是使用现代 opengl 驱动程序中的 gpu 可编程特性实现的。这意味着大部分工作由 GPU 完成。固定函数 opengl 不应该比使用 glsl 做同样的事情慢,但真的很不灵活。

坐标有轴和7轴是什么意思?你有你的应用程序的屏幕截图吗?

鼠标口吃听起来像是在给显示驱动程序增加负担。这听起来像您进行了太多的 opengl 调用。您是否使用即时模式(glBegin glVertex ...)?一些 OpenGL 驱动程序可能没有立即模式的最佳实现。您应该为数据使用顶点缓冲区对象。

【讨论】:

  • 感谢您的回复,7 轴意味着在我的平行坐标图中,我正在绘制 7 个特征。所有的绘图基本上都是使用glBegin和glEnd。但它在我没有任何外部 gpu 的笔记本电脑上工作正常,并在配备 nvidia gpu 的其他两个系统上导致问题,这很奇怪。我相信我正在做的事情,这两台机器都很容易做到这一点而没有任何问题...... opengl 给出了以下结果供应商信息:NVIDIA Corporation 渲染器信息:GeForce GT 650M/PCIe/SSE2 GL 版本信息:4.3.0 NVIDIA 310.19
  • 然后使用顶点数组或顶点缓冲区对象。 NVIDIA 的即时模式可能根本没有优化,因为无论如何都不应该使用它。同样在 intel 图形上,cpu 和 igp 之间的延迟可能比使用 pci-express 的延迟要小,所以这没什么大不了的。
【解决方案2】:

也许我误解了你,但我走了。

有一些 API 调用,如 glBegin、glEnd 向 GPU 发出命令,因此它们使用 GPU 的能力,尽管也有对数组的调用,其他与 API 无关的函数 - 它们使用 CPU。 现在,通过将数据保存在缓冲区(glGenBuffers 等)中,然后在 onDraw 循环中使用这些缓冲区(VBO/IBO),在 OpenGL 的 onDraw 循环之外预加载模型是一个很好的做法。

如果管理得当,它可以减少 GPU/CPU 的负载。希望这会有所帮助。

奥列格

【讨论】:

  • 嗨 Oleg,感谢您的回复..ya 我明白你的意思,我以前使用过 VBO,现在正在考虑使用 VBO 重写它,但我只是不明白为什么更强大的计算机有困难,而一个不太强大的 cpu 只有系统渲染整个事情没有任何打嗝!对我来说似乎有线..
  • 不幸的是,我来自 OpenGL 的 android 和 iOS 开发。所以我对ubuntu系统不熟悉。但我认为 OpenGL 管道对于所有使用 OpenGL 的系统都是相同的。尝试检查您的代码是否存在内存泄漏我知道在 android 上有 DDMS,它可以帮助您,在 iOS 上它是 Xcode。 java SDK为此获得了jmap。另外,正如我之前提到的,如果您在渲染阶段出现混乱,这意味着您的渲染函数进行了过多的计算。
猜你喜欢
  • 2021-11-20
  • 2012-11-21
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多