我有限的FPS:60

Xia*_*Jun 16 opengl graphics

我已经学习了一段时间的OpenGL编程.我发现了一个非常奇怪的现象:我的FPS(每秒帧数)总是保持在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
Run Code Online (Sandbox Code Playgroud)

我朋友的电脑:

 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
Run Code Online (Sandbox Code Playgroud)

我很好奇,我无法理解.我应该为显卡做一些设置吗?有人可以告诉我如何解决问题吗?

Tho*_*mas 17

这是工作中的vsync.您的显示器以60 Hz运行,因此渲染更多帧毫无意义.通过以这种方式限制帧速率,将不会出现撕裂伪影.

可能在驱动程序的控制面板中有一个设置可以强制启用或禁用vsync,或者将其留给应用程序.

如果您使用像GLUT或GLFW这样的OpenGL框架,那么可能还有一个选项可以显式请求vsync,或者将其关闭(这对于基准测试非常有用).但是,并非所有的司机/设置都会尊重这一点.


Kos*_*Kos 17

@Thomas说的是VSync.

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

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

  • 我想指出1 = 60fps,2 = 30fps等 (2认同)

Jer*_*fin 10

nVidia Control Panel:

在此输入图像描述

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