2012-07-03 19 views
12

Bir süredir OpenGL programlamayı öğreniyorum.Ve çok garip bir fenomen buldum: Programın çok kolay veya biraz karmaşık olmasına rağmen benim FPS'im (Saniyedeki Kare) her zaman yaklaşık 60'tır. , bilgisayarım geçen yıl satın alındı ​​ve performans iyi. Grafik kartı nVidia GTX570, CPU I7. YaniSınırlı FPS'im: 60

Bir deney yapmak: Bilgisayarımda

enter image description here

FPS yaklaşık 60 Ama ne zaman geçerli: bilgisayarım ve arkadaşımın computer.This programında aynı programı çalıştırmak gölge eşlemesi uygular arkadaşımın bilgisayarında çalıştırın, FPS 400'den fazladır.

Ama bilgisayarımın performansı onunkinden daha iyi. Artık bilgisayarımın parametresini yayınlıyorum.

bilgisayarım:

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 

Arkadaşımın bilgisayar:?

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 

Ben çok merak ediyorum ve ben grafik kartı için bazı ayarları yapmak out.Should bunu çözemiyorum bazı biri söyleyebilir misiniz sorun nasıl çözülür?

+1

Grafik kartı sürücünüzün ayarlarında Dikey Senkronizasyon etkinleştirildi. Arkadaşınızın PC'sinde bu ayar etkin değil. –

+4

Sadece meraktan dolayı, neden umursuyorsun? İnsan optik sistemi yine de gençlerde FPS ile sınırlı değil mi?Bana öyle geliyor ki bu, 110 km'den daha hızlı sürmeye asla izin vermediğin zaman 300kph yeteneğine sahip bir araba satın almak isteyen insanlara benziyor :-) – paxdiablo

+0

@ paxdiablo benchmarking :). – Kos

cevap

15

Bu, vsync iş başındadır. Monitörünüz 60 Hz'de çalışır, böylece daha fazla kare oluşturulmasında bir nokta yoktur. Ve çerçeveyi bu şekilde sınırlayarak, tearing artifacts olmayacaktır.

Muhtemelen, sürücünün kontrol panelinde vsync'yi zorlamak veya devre dışı bırakmak ya da uygulamaya bırakmak için bir ayar vardır.

GLUT veya GLFW gibi bir OpenGL çerçevesi kullanıyorsanız, muhtemelen aynı zamanda açık bir şekilde vsync isteğinde bulunma veya kapatmak için bir seçenek vardır (bu, karşılaştırma için yararlıdır). Yine de tüm sürücüler/ayarlar bunu kabul etmez. nVidia Control Panel yılında

9

:

enter image description here

dikey senkronizasyon ayarı önemsediğiniz biri. Bunun gibi karşılaştırmalar için normal olarak off olarak ayarlanmasını istersiniz.

+0

My nVidia kontrol panelinde bu öğe yok ~ Neden? – XiaJun

+0

@XiaJun: Emin değilim. Sürücünüz güncel mi? –

+0

Bu öğeyi buldum, Ve anladım.Teşekkürler ~~ – XiaJun

14

Ne @Thomas dedi ki, bu VSync.

Sen kullanarak applicaton devre dışı bırakabilirsiniz:

  • GLFW: glfwSwapInterval(0); (0 = kapalı, 1 = açık)
  • SDL: SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 0);
  • freeglut: Ben bu varlığın farkında değilim Mümkün, GPU ayarlarınızı bir geri dönüş olarak kullanın
+2

Sadece 1 = 60fps, 2 = 30fps, vb. –

+0

glfwSwapInterval (0) benim için işe yaramadı. NVidia kontrol panelinden ayarın değiştirilmesi çalıştı. –

+0

@PetarIvanov GPU sürücüleri, VSync'yi açık/kapalı duruma getirebilir veya uygulama ayarlarına bırakabilir. – Kos

İlgili konular