このページの内容

このリファレンスページは、GLFW 3.5.1 公式ドキュメントを Markdown 向けに調整したものです。書式、ナビゲーション、リンクは libx 用に変更していますが、技術的な内容は GLFW 3.5.1 のソース配布物に基づいています。

説明

これは、OpenGL および OpenGL ES コンテキスト関連関数のリファレンスドキュメントです。作業手順を中心とした情報については、コンテキストガイドを参照してください。

型定義

typedef void(*  GLFWglproc) (void)
  クライアント API 関数のポインター型。
 

関数

void  glfwMakeContextCurrent (GLFWwindow *window)
  指定されたウィンドウのコンテキストを、呼び出し元スレッドでカレントにします。
 
GLFWwindow glfwGetCurrentContext (void)
  呼び出し元スレッドでコンテキストがカレントになっているウィンドウを返します。
 
void  glfwSwapInterval (int interval)
  カレントコンテキストのスワップ間隔を設定します。
 
int  glfwExtensionSupported (const char *extension)
  指定された拡張が利用可能かを返します。
 
GLFWglproc  glfwGetProcAddress (const char *procname)
  カレントコンテキストについて、指定された関数のアドレスを返します。
 

型定義の詳細

◆ GLFWglproc

typedef void(* GLFWglproc) (void)

通常のポインターからのキャストを強制せずに、クライアント API 関数のポインターを返すために使用する汎用関数ポインターです。

関連項目
OpenGL および OpenGL ES の拡張

glfwGetProcAddress

導入バージョン
バージョン 3.0 で追加されました。

関数の詳細

◆ glfwMakeContextCurrent()

void glfwMakeContextCurrent(GLFWwindowwindow)

この関数は、指定されたウィンドウの OpenGL または OpenGL ES コンテキストを、呼び出し元スレッドでカレントにします。NULL を渡すことで、新しいコンテキストをカレントにせず、呼び出し元スレッドからカレントコンテキストを切り離すこともできます。

1つのコンテキストを同時にカレントにできるのは1つのスレッドだけであり、各スレッドで同時にカレントにできるコンテキストも1つだけです。コンテキストをカレントにすると、呼び出し元スレッドで以前カレントだったコンテキストは切り離されます。

コンテキストをスレッド間で移動するときは、新しいスレッドでカレントにする前に、元のスレッドで切り離して(非カレントにして)おかなければなりません。

既定では、コンテキストを非カレントにすると、暗黙にパイプラインのフラッシュが強制されます。GL_KHR_context_flush_control をサポートするマシンでは、GLFW_CONTEXT_RELEASE_BEHAVIOR ヒントを設定することで、コンテキストがこのフラッシュを実行するかを制御できます。

指定されたウィンドウは、OpenGL または OpenGL ES コンテキストを持っていなければなりません。コンテキストのないウィンドウを指定すると、GLFW_NO_WINDOW_CONTEXT エラーが発生します。

引数

[in]windowコンテキストをカレントにするウィンドウ。カレントコンテキストを切り離す場合は NULL

備考
以前のカレントコンテキストが、この関数へ渡されたものとは異なるコンテキスト作成 API で作成されていた場合でも、GLFW は新しいコンテキストをカレントにする前に、以前のコンテキストをその API から切り離します。

エラー
発生する可能性のあるエラーには、GLFW_NOT_INITIALIZEDGLFW_NO_WINDOW_CONTEXT、および GLFW_PLATFORM_ERROR があります。

スレッドセーフ性
この関数は、任意のスレッドから呼び出せます。

関連項目
カレントコンテキスト

glfwGetCurrentContext

導入バージョン
バージョン 3.0 で追加されました。

◆ glfwGetCurrentContext()

GLFWwindow * glfwGetCurrentContext(void )

この関数は、呼び出し元スレッドで OpenGL または OpenGL ES コンテキストがカレントになっているウィンドウを返します。

戻り値
コンテキストがカレントになっているウィンドウ。どのウィンドウのコンテキストもカレントでない場合は NULL

エラー
発生する可能性のあるエラーには、GLFW_NOT_INITIALIZED があります。

スレッドセーフ性
この関数は、任意のスレッドから呼び出せます。

関連項目
カレントコンテキスト

glfwMakeContextCurrent

導入バージョン
バージョン 3.0 で追加されました。

◆ glfwSwapInterval()

void glfwSwapInterval(int interval)

この関数は、カレントの OpenGL または OpenGL ES コンテキストのスワップ間隔を設定します。これは、glfwSwapBuffers が呼び出されてから、バッファを交換して戻るまでに待機する画面更新の回数です。これは、垂直同期垂直帰線同期、または単に vsync と呼ばれることがあります。

WGL_EXT_swap_control_tear または GLX_EXT_swap_control_tear 拡張のいずれかをサポートするコンテキストでは、のスワップ間隔も受け付けます。これにより、フレームの到着が少し遅れた場合でも、ドライバーが直ちに交換できます。これらの拡張は glfwExtensionSupported で確認できます。

呼び出し元スレッドでコンテキストがカレントになっていなければなりません。カレントコンテキストなしでこの関数を呼び出すと、GLFW_NO_CURRENT_CONTEXT エラーが発生します。

この関数は Vulkan には適用されません。Vulkan でレンダリングする場合は、代わりにスワップチェーンのプレゼントモードを参照してください。

引数

[in]intervalglfwSwapBuffers によってバッファが交換されるまでに待機する、画面更新の最小回数。

エラー
発生する可能性のあるエラーには、GLFW_NOT_INITIALIZEDGLFW_NO_CURRENT_CONTEXT、および GLFW_PLATFORM_ERROR があります。

備考
この関数はコンテキスト作成中には呼び出されず、スワップ間隔はその API の既定値のままになります。GLFW が使用する一部のスワップ間隔拡張では、スワップ間隔をゼロ以外の値に設定した後でゼロへ戻せないためです。

一部の GPU ドライバーは、アプリケーションの要求を上書きするユーザー設定やドライバーの不具合により、要求されたスワップ間隔に従いません。

スレッドセーフ性
この関数は、任意のスレッドから呼び出せます。

関連項目
バッファの交換

glfwSwapBuffers

導入バージョン
バージョン 1.0 で追加されました。

◆ glfwExtensionSupported()

int glfwExtensionSupported(const char * extension)

この関数は、指定された API 拡張が、カレントの OpenGL または OpenGL ES コンテキストでサポートされているかを返します。クライアント API 拡張とコンテキスト作成 API 拡張の両方を検索します。

呼び出し元スレッドでコンテキストがカレントになっていなければなりません。カレントコンテキストなしでこの関数を呼び出すと、GLFW_NO_CURRENT_CONTEXT エラーが発生します。

この関数は呼び出すたびに1つ以上の拡張文字列を取得して検索するため、頻繁に使用する場合は結果をキャッシュすることを推奨します。拡張文字列はコンテキストの有効期間中に変化しないため、キャッシュしても問題ありません。

この関数は Vulkan には適用されません。Vulkan を使用する場合は、代わりに glfwGetRequiredInstanceExtensionsvkEnumerateInstanceExtensionPropertiesvkEnumerateDeviceExtensionProperties を参照してください。

引数

[in]extensionASCII でエンコードされた拡張名。

戻り値
拡張が利用可能な場合は GLFW_TRUE、それ以外の場合は GLFW_FALSE

エラー
発生する可能性のあるエラーには、GLFW_NOT_INITIALIZEDGLFW_NO_CURRENT_CONTEXTGLFW_INVALID_VALUE、および GLFW_PLATFORM_ERROR があります。

スレッドセーフ性
この関数は、任意のスレッドから呼び出せます。

関連項目
OpenGL および OpenGL ES の拡張

glfwGetProcAddress

導入バージョン
バージョン 1.0 で追加されました。

◆ glfwGetProcAddress()

GLFWglproc glfwGetProcAddress(const char * procname)

この関数は、指定された OpenGL または OpenGL ES のコア関数または拡張関数がカレントコンテキストでサポートされている場合、そのアドレスを返します。

呼び出し元スレッドでコンテキストがカレントになっていなければなりません。カレントコンテキストなしでこの関数を呼び出すと、GLFW_NO_CURRENT_CONTEXT エラーが発生します。

この関数は Vulkan には適用されません。Vulkan でレンダリングする場合は、代わりに glfwGetInstanceProcAddressvkGetInstanceProcAddrvkGetDeviceProcAddr を参照してください。

引数

[in]procnameASCII でエンコードされた関数名。

戻り値
関数のアドレス。エラーが発生した場合は NULL

エラー
発生する可能性のあるエラーには、GLFW_NOT_INITIALIZEDGLFW_NO_CURRENT_CONTEXT、および GLFW_PLATFORM_ERROR があります。

備考
ある関数のアドレスが、コンテキスト間で同じであることは保証されません。

関連するバージョンまたは拡張が利用できない場合でも、この関数が NULL でないアドレスを返すことがあります。必ず先にコンテキストのバージョンまたは拡張文字列を確認してください。

ポインターの有効期間
返された関数ポインターは、コンテキストが破棄されるか、ライブラリが終了するまで有効です。

スレッドセーフ性
この関数は、任意のスレッドから呼び出せます。

関連項目
OpenGL および OpenGL ES の拡張

glfwExtensionSupported

導入バージョン
バージョン 1.0 で追加されました。