OpenGLのインターバル
Windows環境前提。
インターバルを行う方法
Win環境なら拡張関数を使用します。
WINAPI BOOL wglSwapIntervalEXT(int isinterval);
// isinterval = 0: インターバルしない
// isinterval = 1: インターバルする
OpenGL初期化後に一度コールすると、以後有効になります。
毎回コールする必要はありませんが、必要に応じてコールしてください。
実行方法
先ずは拡張関数をサポートしているか調べた後、APIを取得して実行する必要があります。
以下はサンプルコードです。
// インターバル設定
// isinterval = 0: インターバルしない
// isinterval = 1: インターバルする
void glSetInterval(int isinterval)
{
//拡張関数を受け取る関数ポインタ
BOOL (WINAPI *wglSwapIntervalEXT)(int) = NULL;
//拡張関数のWGL_EXT_swap_controlをサポートしているか調べる
if( strstr( (char*)glGetString( GL_EXTENSIONS ), "WGL_EXT_swap_control") == 0)
{
//WGL_EXT_swap_controlをサポートしていない
return;
}
else
{
//APIを取得して実行
wglSwapIntervalEXT = (BOOL (WINAPI*)(int))wglGetProcAddress("wglSwapIntervalEXT");
if( wglSwapIntervalEXT )
{
wglSwapIntervalEXT(isinterval);
}
}
}
サポートしてなければtimeGetTimeなどを使用して、タイマで同期を取るしか無いみたいです。
Back
2007/07/07 Gyabo