2012-07-03 38 views
12

Tôi đã học lập trình OpenGL trong một khoảng thời gian. Và tôi đã tìm thấy một hiện tượng rất lạ: FPS của tôi (Frame per Second) luôn ở mức 60, bất kể chương trình rất dễ hay phức tạp một chút. , máy tính của tôi được mua vào năm ngoái và hiệu suất là tốt. Card đồ họa là nVidia GTX570, CPU là I7.FPS giới hạn của tôi: 60

Vì vậy, tôi thực hiện một thí nghiệm: chạy cùng một chương trình trên máy tính của tôi và chương trình computer.This của bạn tôi thực hiện bản đồ bóng:

enter image description here

FPS trong máy tính của tôi là về 60. Nhưng khi tôi chạy nó trong máy tính của bạn tôi, FPS là hơn 400. enter image description here

Nhưng hiệu suất máy tính của tôi rõ ràng là tốt hơn so với của mình. Bây giờ tôi đăng thông số của máy tính.

Máy tính của tôi:

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 
máy tính

bạn tôi:

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 

Tôi rất tò mò và tôi không thể hình dung nó out.Should tôi làm một số thiết lập cho card đồ họa có thể một số một cho tôi làm thế nào để giải quyết vấn đề?

+1

Đồng bộ hóa dọc được bật trong cài đặt trình điều khiển cạc đồ họa của bạn. PC của bạn bè bạn chưa bật cài đặt này. –

+4

Chỉ vì tò mò, tại sao bạn quan tâm? Không phải hệ thống quang học của con người giới hạn ở FPS ở tuổi thiếu niên sao?Nó xuất hiện với tôi rằng điều này giống như những người muốn mua một chiếc xe có khả năng 300kph khi bạn không bao giờ được phép lái nó nhanh hơn 110 anyway :-) – paxdiablo

+0

@paxdiablo benchmarking :). – Kos

Trả lời

15

Đây là vsync tại nơi làm việc. Màn hình của bạn chạy ở 60 Hz, do đó không có điểm nào trong việc hiển thị nhiều khung hình hơn. Và bằng cách giới hạn tốc độ khung hình theo cách đó, sẽ không có tearing artifacts.

Có thể có cài đặt trong bảng điều khiển của trình điều khiển để bật hoặc tắt vsync một cách mạnh mẽ hoặc để ứng dụng này hoạt động.

Nếu bạn sử dụng khung OpenGL như GLUT hoặc GLFW, điều đó có thể cũng có tùy chọn yêu cầu một cách rõ ràng vsync hoặc tắt nó (điều này hữu ích cho điểm chuẩn). Không phải tất cả các trình điều khiển/cài đặt sẽ tôn trọng điều này, mặc dù.

9

Trong nVidia Control Panel:

enter image description here

Thiết lập đồng bộ dọc là một trong những bạn quan tâm. Đối với các điểm chuẩn như thế này, bạn thường muốn nó được đặt thành off.

+0

Bảng điều khiển nVidia của tôi không có mục này ~ Tại sao? – XiaJun

+0

@XiaJun: Tôi không chắc chắn. Là tài xế của bạn hiện tại? –

+0

Tôi đã tìm thấy mặt hàng này, Và tôi đã nhận nó. Cảm ơn ~~ – XiaJun

14

@Thomas nói gì, đó là VSync.

Bạn có thể vô hiệu hóa nó trong applicaton bạn sử dụng:

  • GLFW: glfwSwapInterval(0); (0 = off, 1 = on)
  • SDL: SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 0);
  • FreeGLUT: Tôi không nhận thức được con người này có thể, sử dụng cài đặt GPU của bạn làm dự phòng
+2

Tôi chỉ muốn chỉ 1 = 60 khung hình/giây, 2 = 30fps, v.v. –

+0

glfwSwapInterval (0) không hoạt động đối với tôi. Thay đổi cài đặt từ bảng điều khiển NVidia đã hoạt động. –

+0

Trình điều khiển GPU @PetarIvanov có thể thực thi bật/tắt VSync hoặc để thiết lập ứng dụng. – Kos

Các vấn đề liên quan