18

私はしばらくの間OpenGLプログラミングを学びましたが、非常に奇妙な現象を発見しました:プログラムが非常に簡単であろうと少し複雑であろうと、私のFPS(フレーム/秒)は常に約60のままです。実際、私のコンピューターは昨年購入され、グラフィックカードはnVidiaGTX570、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

非常に興味があり、理解できません。グラフィックカードの設定を行う必要がありますか?問題の解決方法を教えてもらえますか?

4

3 に答える 3

25

What @Thomas said, it's VSync.

You can disable it in your applicaton using:

  • GLFW: glfwSwapInterval(0); (0 = off, 1 = on)
  • SDL: SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 0);
  • FreeGLUT: I'm not aware of this being possible, use your GPU settings as a fallback
于 2012-07-03T14:00:20.863 に答える
21

これは仕事中のvsyncです。モニターは 60 Hz で動作するため、より多くのフレームをレンダリングしても意味がありません。フレームレートをそのように制限することで、テアリング アーティファクトが発生しなくなります。

おそらく、ドライバーのコントロール パネルに、vsync を強制的に有効または無効にする設定、またはアプリケーションに任せる設定があります。

GLUT や GLFW などの OpenGL フレームワークを使用している場合は、vsync を明示的に要求するか、オフにするオプションもおそらくあります (これはベンチマークに役立ちます)。ただし、すべてのドライバー/設定がこれを尊重するわけではありません。

于 2012-07-03T13:49:41.040 に答える
10

nVidia Control Panel

ここに画像の説明を入力

気になるのは垂直同期設定。このようなベンチマークの場合、通常は に設定しoffます。

于 2012-07-03T13:51:56.803 に答える