【发布时间】:2021-10-18 16:35:09
【问题描述】:
我正在使用 OpenGL 4.5 在集成的 Intel UHD 630 GPU 上渲染一个非常大的网格(高度图),并试图了解我所获得的性能是否符合预期(诚然较低级别) GPU,或者我是否在某处做错了什么。
网格是从 1024x1024 图像生成的,生成一个大网格:
- 顶点缓冲区:4190766 个顶点(167630640 字节)
- 索引缓冲区:6285870 个索引(25143480 字节)
我正在使用设置了 GL_STATIC_DRAW 的 VBO,并且网格仅在程序启动时上传一次。它是通过一个 glDrawElements 调用绘制的。
目前我的帧时间是 9 毫秒。如果我禁用网格的 glDrawElements 调用(只留下其他较小的网格和 UI 绘图),我的帧时间将远低于 1 毫秒。所以几乎所有的绘制时间都花在了这个大的绘制调用上。
但是,即使在此 GPU 上,我也希望有更好的性能。网格在 VBO 中,它已经有了数据,所以我不知道为什么要花 9 毫秒来绘制。
有没有办法知道这个 GPU 的实际能力,以及在绘制 4 百万个以上的顶点时这个帧时间是否符合预期?
【问题讨论】:
-
"但是,即使在此 GPU 上,我也希望有更好的性能。" 为什么?你似乎在推约 200 万个三角形。每帧 10 毫秒,即每秒约 2 亿个三角形。这对于集成 GPU 来说非常可观。
-
“这对于集成 GPU 来说非常值得尊敬” 这就是我希望得到的答案,因为我不知道这些天集成 GPU 应该具备什么能力.现代游戏推动了大量的三角形,我已经接近了一个(尽管很大)绘制调用的帧限制。我想知道这个限制应该是什么。
标签: opengl