【问题标题】:My limited FPS : 60我有限的FPS:60
【发布时间】:2012-07-03 23:13:50
【问题描述】:

我学习OpenGL编程有一段时间了,我发现一个很奇怪的现象:我的FPS(Frame per Second)总是保持在60左右,无论程序很简单还是有点复杂。实际上,我的电脑是买的去年的,性能不错。显卡是nVidia GTX570,CPU是I7。

于是我做了一个实验:在我的电脑和我朋友的电脑上运行同一个程序。这个程序实现了阴影映射:

我电脑的 FPS 大约是 60。 但是当我在朋友的电脑上运行时,FPS超过了400。

但是我的电脑的性能明显比他的好。现在我把我们电脑的参数贴出来。

我的电脑:

tgt.init (Info)  GLEW version: 1.7.0
tgt.GpuCapabilities (Info)  OS version: Windows 7 (build 7600)
tgt.GpuCapabilities (Info)  OpenGL Version: 4.2.0
tgt.GpuCapabilities (Info)  OpenGL Renderer: GeForce GTX 570/PCIe/SSE2
tgt.GpuCapabilities (Info)  GPU Vendor: NVIDIA Corporation (NVIDIA)
tgt.GpuCapabilities (Info)  Texturing: yes, max size: 16384, 3D: yes, max 3D size: 2048
tgt.GpuCapabilities (Info)  Texture features: 32 units, NPOT, rectangles, compression, 16x anisotropic
tgt.GpuCapabilities (Info)  Framebuffer Objects: yes, max 8 color attachments
tgt.GpuCapabilities (Info)  Shaders: yes (OpenGL 2.0), GLSL Version 4.20, Shader Model 5.0
tgt.GpuCapabilitiesWindows (Info)  Graphics Driver Version: 8.17.12.9573
tgt.GpuCapabilitiesWindows (Info)  Graphics Driver Date: 2012-02-09
tgt.GpuCapabilitiesWindows (Info)  Graphics Memory Size: 1280 MB

我朋友的电脑:

 tgt.GpuCapabilities (Info)  OS version: Windows 7 Service Pack 1 (build 7601)
tgt.GpuCapabilities (Info)  OpenGL Version: 4.2.11566 Compatibility Profile Context
tgt.GpuCapabilities (Info)  OpenGL Renderer: AMD Radeon HD 6620G
tgt.GpuCapabilities (Info)  GPU Vendor: ATI Technologies Inc. (ATI)
tgt.GpuCapabilities (Info)  Texturing: yes, max size: 16384, 3D: yes, max 3D size: 8192
tgt.GpuCapabilities (Info)  Texture features: 16 units, NPOT, rectangles, compression, 16x anisotropic
tgt.GpuCapabilities (Info)  Framebuffer Objects: yes, max 8 color attachments
tgt.GpuCapabilities (Info)  Shaders: yes (OpenGL 2.0), GLSL Version 4.20, Shader Model 5.0
tgt.GpuCapabilitiesWindows (Info)  Graphics Driver Version: 6.14.10.11566
tgt.GpuCapabilitiesWindows (Info)  Graphics Driver Date: 2012-03-09
tgt.GpuCapabilitiesWindows (Info)  Graphics Memory Size: 512 MB

我很好奇,想不通。我应该对显卡进行一些设置吗?有人能告诉我如何解决这个问题吗?

【问题讨论】:

  • 在您的显卡驱动程序设置中启用了垂直同步。您朋友的电脑未启用此设置。
  • 只是出于好奇,你为什么在乎?人类的光学系统难道不是仅限于青少年的FPS吗?在我看来,这就像人们想买一辆时速能达到 300 公里的汽车,但无论如何你都不允许开超过 110 公里的速度:-)
  • @paxdiablo:即使人类视觉系统不受限制,您希望在计算机上看到的最快速度是显示器的更新速度,通常为 60 FPS。

标签: opengl graphics


【解决方案1】:

这是vsync 在工作。您的显示器以 60 Hz 运行,因此渲染更多帧毫无意义。而且通过这种方式限制帧率,就不会有tearing artifacts

您的驱动程序控制面板中可能有一个设置可以强制启用或禁用垂直同步,或者由应用程序自行决定。

如果您使用 OpenGL 框架,如 GLUT 或 GLFW,则可能还可以选择显式请求 vsync 或将其关闭(这对于基准测试很有用)。不过,并非所有驱动程序/设置都支持这一点。

【讨论】:

    【解决方案2】:

    nVidia Control Panel

    垂直同步设置是您关心的设置。对于这样的基准,您通常希望将其设置为 off

    【讨论】:

    • 我的nVidia控制面板没有这个项目~为什么?
    • @XiaJun:我不确定。你的司机是最新的吗?
    • 我找到了这个项目,我得到了。谢谢~~
    【解决方案3】:

    @Thomas 说的是垂直同步。

    您可以在您的应用程序中使用以下方法禁用它:

    • GLFW:glfwSwapInterval(0);0 = 关闭,1 = 开启)
    • SDL:SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 0);
    • FreeGLUT:我不知道这是可能的,使用您的 GPU 设置作为后备

    【讨论】:

    • glfwSwapInterval(0) 对我不起作用。从 NVidia 控制面板更改设置有效。
    • @PetarIvanov GPU 驱动程序能够强制开启/关闭垂直同步或将其留给应用程序设置。
    猜你喜欢
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多