我有一个代码,它基本上使用 opengl 固定 func 管道绘制平行坐标。该坐标有 7 个轴并绘制 64k 条线。所以输出很混乱,但是当我在具有英特尔 i5 proc、8gb ddr3 ram 的笔记本电脑上运行代码时,它运行良好。我的一个朋友在两个不同的系统中运行相同的代码,这两个系统都有英特尔 i7 和 8gb ddr3 ram 以及一个 nvidia gpu。在这些系统中,代码以快门运行,有时鼠标指针变得无响应。如果你们能给出一些想法为什么会发生这种情况,那将有很大的帮助。最初我认为它在这些系统中运行得更快,因为它们有一个专用的 gpu。我自己的笔记本电脑有 ubuntu 12.04,其他两个系统都有 ubuntu 10.x。
问问题
352 次
2 回答
0
也许我误解了你,但我走了。
有诸如 glBegin、glEnd 之类的 API 调用,它们向 GPU 发出命令,因此它们使用 GPU 马力,尽管也有对数组的调用,其他与 API 无关的函数 - 它们使用 CPU。现在,通过将数据保存在缓冲区(glGenBuffers 等)中,然后在 onDraw 循环中使用这些缓冲区(VBO/IBO),在 OpenGL 的 onDraw 循环之外预加载模型是一个很好的做法。
如果管理得当,它可以减少 GPU/CPU 的负载。希望这可以帮助。
奥列格
于 2013-02-13T23:01:40.410 回答
0
固定功能管道是使用现代 opengl 驱动程序中的 gpu 可编程特性实现的。这意味着大部分工作由 GPU 完成。固定功能 opengl 不应该比使用 glsl 来做同样的事情慢,但真的很不灵活。
坐标轴和 7 轴是什么意思?你有你的应用程序的屏幕截图吗?
鼠标口吃听起来像是在给显示驱动程序增加负担。这听起来像您进行了太多的 opengl 调用。您是否使用即时模式(glBegin glVertex ...)?某些 OpenGL 驱动程序可能没有立即模式的最佳实现。您应该为数据使用顶点缓冲区对象。
于 2013-02-13T22:03:51.150 回答