我的最终目标是以 60 fps 渲染 100 万个不同大小和颜色的球体。我也希望能够在屏幕上移动相机。
我已经修改了我正在学习的教程的此页面上的代码,以尝试对许多球体进行实例化。然而,我发现在 64 个球体时,我的 fps 低于 60,而在 900 个球体时,我的 fps 是微不足道的 4。我对实例化的理解很幼稚,但我相信我应该每秒获得更多帧数这个。只有 64 个球体应该可以达到 60 fps。我相信,在某种程度上,我导致 CPU 和 GPU 的通信频率高于它们应有的频率。所以我的问题是:如何在不导致 fps 降低(理想情况下为 60 fps)的情况下实例化这么多对象(最好是数百万个)?
我通过(10 / time_elapsed)每 10 帧计算一次来计算 fps ,这time_elapsed是自上次 fps 调用以来经过的时间。我正在使用printf我的代码的第 118 行打印出来。
我一直在通过本教程学习 OpenGL ,因此我在 Visual Studio 2013 中使用了32 位 GLEW和32 位 GLFW。我在 64 位操作系统(Windows 7)上有 8 GB 的 RAM 和2.30 GHz CPU。
我已经尝试根据上面的教程编写自己的示例。源代码:
(将第 2 …
我正在使用 directx 11 制作一个应用程序。我首先想利用实例化,因此为了简单起见,我组织了整个管道以始终使用实例化。这意味着目前如果我想在场景中绘制单个几何体,它仍然会经过实例渲染。
我的问题是实例化会带来什么开销?一般来说,这种方法是一种不好的做法吗?如果是这样,是否存在关于如何决定何时使用实例有益、何时不有益的规则?
一个类似的问题对我没有帮助:与实例渲染相关的开销是多少?