2012-07-03 10 views
12

He aprendido la programación de OpenGL durante algún tiempo.Y encontré un fenómeno muy extraño: mi FPS (Cuadro por segundo) siempre se mantiene alrededor de 60, sin importar si el programa es muy fácil o algo complicado. En realidad , mi computadora se compró el año pasado y el rendimiento es bueno. La tarjeta gráfica es nVidia GTX570, la CPU es I7.Mi FPS limitado: 60

Así que hago un experimento: ejecutar el mismo programa en mi ordenador y el programa ordenador.Este de mi amigo implementa el mapeo de sombra:

enter image description here

El FPS en mi equipo es de aproximadamente 60. Pero cuando ejecutarlo en la computadora de mi amigo, el FPS es más de 400. enter image description here

Pero el rendimiento de mi computadora es obvio mejor que el suyo. Ahora publico el parámetro de nuestra computadora.

Mi equipo:

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 
equipo

de mi amigo:?

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 

soy muy curiosa y no puedo imaginar que out.Should hago algunos ajustes para la tarjeta gráfica podría decirle a alguien ¿Cómo puedo resolver el problema?

+1

La Sincronización vertical se habilita en la configuración del controlador de su tarjeta gráfica. La PC de tu amigo no tiene habilitada esta configuración. –

+4

Solo por curiosidad, ¿por qué te importa? ¿No es el sistema óptico humano limitado a FPS en los adolescentes de todos modos?Me parece que esto es como personas que quieren comprar un automóvil capaz de 300kph cuando nunca se les permite conducir más rápido que 110 de todos modos :-) – paxdiablo

+0

@paxdiablo benchmarking :). – Kos

Respuesta

15

Esto es vsync en el trabajo. Su monitor funciona a 60 Hz, por lo que no tiene sentido renderizar más cuadros. Y al limitar el framerate de esa manera, no habrá tearing artifacts.

Probablemente hay una configuración en el panel de control de su controlador para habilitar o deshabilitar la función vsync con fuerza, o dejarla en la aplicación.

Si utiliza un framework OpenGL como GLUT o GLFW, probablemente también tenga una opción para solicitar explícitamente vsync, o para desactivarlo (lo cual es útil para el benchmarking). Sin embargo, no todos los controladores/configuraciones lo respetarán.

9

En el nVidia Control Panel:

enter image description here

El ajuste de sincronización vertical es la que le interesan. Para puntos de referencia como este, normalmente quiere establecerlo en off.

+0

Mi panel de control nVidia no tiene este elemento ~ ¿Por qué? – XiaJun

+0

@XiaJun: No estoy seguro. ¿Está su conductor al día? –

+0

He encontrado este artículo, y lo tengo.Gracias ~~ – XiaJun

14

Lo que dijo @Thomas, es VSync.

Puede desactivarlo en tu applicaton usando:

  • GLFW: glfwSwapInterval(0); (0 = apagado, 1 = activado)
  • SDL: SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 0);
  • freeglut: No estoy al tanto de este ser posible, use la configuración de su GPU como alternativa
+2

Simplemente me gustaría señalar que 1 = 60 fps, 2 = 30 fps, etc. –

+0

glfwSwapInterval (0) no funcionó para mí. Se modificó la configuración del panel de control de NVidia. –

+0

@PetarIvanov Los controladores de GPU pueden activar/desactivar VSync o dejarlo a la configuración de la aplicación. – Kos

Cuestiones relacionadas