2009-08-03 6 views
2

python(2.6)でモニタのリフレッシュレートを取得するためのクロスプラットフォームの方法はありますか?私はPygameとPyOpenGLを使用しています。どのようにしてモニタのリフレッシュレートを決定できますか?

私はリフレッシュレートを変更する必要はありません、私はそれが何であるかを知る必要があります。

+0

?ゲームのループなどを書いている場合は、通常、リフレッシュレートを使用する必要はありません。 –

+0

私のアプリが全画面で実行されているときに、v-syncが有効になり、fpsがリフレッシュレートで上書きされます。 V-syncはウィンドウモードでは有効になっておらず、fpsは何倍も高速です。ウィンドウとフルスクリーンで同じスピードで動作させたいので、モニターのリフレッシュレートとして最大fpsを設定します。 –

+0

あなたのゲームロジックとレンダリングレートをあなたのものと同じように結ぶべきではありません。いくつかの代替ゲームループの構造を見てください:http://dewitters.koonsolo.com/gameloop.html –

答えて

3

使用するプラットフォームについてはわかりませんが、ウィンドウではctypesやwin32apiを使用してデバイスに関する詳細を取得できます。私のシステム上のWin32API

import win32api 

def printInfo(device): 
    print((device.DeviceName, device.DeviceString)) 
    settings = win32api.EnumDisplaySettings(device.DeviceName, -1) 
    for varName in ['Color', 'BitsPerPel', 'DisplayFrequency']: 
     print("%s: %s"%(varName, getattr(settings, varName))) 

device = win32api.EnumDisplayDevices() 
printInfo(device) 

出力を使用して:あなたは、私が頼むかもしれない場合は、のためのリフレッシュレートを使用しようとしている何

\\.\DISPLAY1 Mobile Intel(R) 945GM Express Chipset Family 
Color: 0 
BitsPerPel: 8 
DisplayFrequency: 60