このページの内容

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

説明

これらの使用方法については、エラー処理を参照してください。

マクロ

#define  GLFW_NO_ERROR   0
  エラーは発生していません。
 
#define  GLFW_NOT_INITIALIZED   0x00010001
  GLFWが初期化されていません。
 
#define  GLFW_NO_CURRENT_CONTEXT   0x00010002
  このスレッドでカレントになっているコンテキストがありません。
 
#define  GLFW_INVALID_ENUM   0x00010003
  関数に渡された引数のいずれかが無効な列挙値です。
 
#define  GLFW_INVALID_VALUE   0x00010004
  関数に渡された引数のいずれかが無効な値です。
 
#define  GLFW_OUT_OF_MEMORY   0x00010005
  メモリの割り当てに失敗しました。
 
#define  GLFW_API_UNAVAILABLE   0x00010006
  要求されたAPIのサポートをGLFWがシステム上で見つけられませんでした。
 
#define  GLFW_VERSION_UNAVAILABLE   0x00010007
  要求されたバージョンのOpenGLまたはOpenGL ESを利用できません。
 
#define  GLFW_PLATFORM_ERROR   0x00010008
  より具体的なカテゴリのいずれにも該当しない、プラットフォーム固有のエラーが発生しました。
 
#define  GLFW_FORMAT_UNAVAILABLE   0x00010009
  要求された形式はサポートされていないか、利用できません。
 
#define  GLFW_NO_WINDOW_CONTEXT   0x0001000A
  指定されたウィンドウにはOpenGLまたはOpenGL ESコンテキストがありません。
 
#define  GLFW_CURSOR_UNAVAILABLE   0x0001000B
  指定されたカーソル形状を利用できません。
 
#define  GLFW_FEATURE_UNAVAILABLE   0x0001000C
  要求された機能はプラットフォームによって提供されていません。
 
#define  GLFW_FEATURE_UNIMPLEMENTED   0x0001000D
  要求された機能はそのプラットフォーム向けに実装されていません。
 
#define  GLFW_PLATFORM_UNAVAILABLE   0x0001000E
  プラットフォームを利用できないか、一致するプラットフォームが見つかりませんでした。
 

マクロ定義の解説

◆ GLFW_NO_ERROR

#define GLFW_NO_ERROR   0

エラーは発生していません。

分析
問題ありません。

◆ GLFW_NOT_INITIALIZED

#define GLFW_NOT_INITIALIZED   0x00010001

ライブラリが初期化されていなければ呼び出してはならないGLFW関数を呼び出した場合に発生します。

分析
アプリケーションプログラマーの誤りです。初期化が必要な関数を呼び出す前にGLFWを初期化してください。

◆ GLFW_NO_CURRENT_CONTEXT

#define GLFW_NO_CURRENT_CONTEXT   0x00010002

カレントのOpenGLまたはOpenGL ESコンテキストを必要とし、それを操作するGLFW関数を呼び出したものの、呼び出し元スレッドでカレントになっているコンテキストがない場合に発生します。そのような関数の一つが glfwSwapInterval です。

分析
アプリケーションプログラマーの誤りです。カレントコンテキストを必要とする関数を呼び出す前に、コンテキストがカレントになっていることを確認してください。

◆ GLFW_INVALID_ENUM

#define GLFW_INVALID_ENUM   0x00010003

関数に渡された引数のいずれかが無効な列挙値です。たとえば、glfwGetWindowAttribGLFW_RED_BITS を要求した場合です。

分析
アプリケーションプログラマーの誤りです。問題のある呼び出しを修正してください。

◆ GLFW_INVALID_VALUE

#define GLFW_INVALID_VALUE   0x00010004

関数に渡された引数のいずれかが無効な値です。たとえば、2.7のように存在しないバージョンのOpenGLまたはOpenGL ESを要求した場合です。

有効ではあるものの利用できないバージョンのOpenGLまたはOpenGL ESを要求した場合は、代わりに GLFW_VERSION_UNAVAILABLE エラーになります。

分析
アプリケーションプログラマーの誤りです。問題のある呼び出しを修正してください。

◆ GLFW_OUT_OF_MEMORY

#define GLFW_OUT_OF_MEMORY   0x00010005

メモリの割り当てに失敗しました。

分析
GLFWまたは基盤となるオペレーティングシステムのバグです。issue trackerへバグを報告してください。

◆ GLFW_API_UNAVAILABLE

#define GLFW_API_UNAVAILABLE   0x00010006

要求されたAPIのサポートをGLFWがシステム上で見つけられませんでした。

分析
インストールされているグラフィックスドライバーが要求されたAPIをサポートしていないか、選択したコンテキスト作成APIを介してはサポートしていません。以下にいくつか例を示します。

Windowsにプリインストールされている一部のグラフィックスドライバーはOpenGLをサポートしていません。AMDはEGLを介したOpenGL ESだけをサポートする一方、NvidiaとIntelはWGLまたはGLX拡張機能を介したものだけをサポートします。macOSはOpenGL ESをまったく提供していません。MesaのEGL、OpenGL、OpenGL ESライブラリは、Nvidiaのバイナリドライバーと連携しません。古いグラフィックスドライバーはVulkanをサポートしていません。

◆ GLFW_VERSION_UNAVAILABLE

#define GLFW_VERSION_UNAVAILABLE   0x00010007

要求されたバージョンのOpenGLまたはOpenGL ES(要求されたコンテキストまたはフレームバッファのヒントを含む)を、このマシンでは利用できません。

分析
このマシンは要求をサポートしていません。アプリケーションに十分な柔軟性がある場合は、要求を引き下げて再試行してください。それ以外の場合は、マシンが要求を満たしていないことをユーザーへ通知してください。

将来の無効なOpenGLおよびOpenGL ESバージョンも、GLFW_INVALID_VALUE ではなく、このエラーで失敗します。たとえば、4.x系列が4.8へ到達する前に5.0が登場した場合のOpenGL 4.8です。これは、将来どのバージョンが存在するかをGLFWが知ることはできないためです。

◆ GLFW_PLATFORM_ERROR

#define GLFW_PLATFORM_ERROR   0x00010008

より具体的なカテゴリのいずれにも該当しない、プラットフォーム固有のエラーが発生しました。

分析
GLFW、基盤となるオペレーティングシステムまたはそのドライバーのバグや構成エラー、あるいは必要なリソースの不足です。issue trackerへ問題を報告してください。

◆ GLFW_FORMAT_UNAVAILABLE

#define GLFW_FORMAT_UNAVAILABLE   0x00010009

ウィンドウ作成中に発生した場合、要求されたピクセルフォーマットはサポートされていません。

クリップボードの照会時に発生した場合、クリップボードの内容を要求された形式へ変換できませんでした。

分析
ウィンドウ作成中に発生した場合、1つ以上の厳密な制約に一致する利用可能なピクセルフォーマットがありませんでした。アプリケーションに十分な柔軟性がある場合は、要求を引き下げて再試行してください。それ以外の場合は、マシンが要求を満たしていないことをユーザーへ通知してください。

クリップボードの照会時に発生した場合は、状況に応じてエラーを無視するか、ユーザーへ報告してください。

◆ GLFW_NO_WINDOW_CONTEXT

#define GLFW_NO_WINDOW_CONTEXT   0x0001000A

OpenGLまたはOpenGL ESコンテキストを持つ必要がある関数へ、コンテキストを持たないウィンドウが渡されました。

分析
アプリケーションプログラマーの誤りです。問題のある呼び出しを修正してください。

◆ GLFW_CURSOR_UNAVAILABLE

#define GLFW_CURSOR_UNAVAILABLE   0x0001000B

指定された標準カーソル形状を利用できません。現在のプラットフォームのカーソルテーマが提供していないか、プラットフォームで利用できないためです。

分析
プラットフォームまたはシステム設定による制限です。別の標準カーソル形状を選択するか、カスタムカーソルを作成してください。

◆ GLFW_FEATURE_UNAVAILABLE

#define GLFW_FEATURE_UNAVAILABLE   0x0001000C

要求された機能がプラットフォームによって提供されていないため、GLFWはその機能を実装できません。このエラーが発生する可能性がある場合は、各関数のドキュメントに記載されています。

分析
プラットフォームまたはプラットフォームのバージョンによる制限です。その機能がアプリケーションに不可欠でない限り、このエラーは無視できます。

このエラーを発生させる関数呼び出しは、エラーの発生と、存在する出力引数の更新以外には何も行いません。

◆ GLFW_FEATURE_UNIMPLEMENTED

#define GLFW_FEATURE_UNIMPLEMENTED   0x0001000D

要求された機能は、このプラットフォーム向けのGLFWにはまだ実装されていません。

分析
このプラットフォーム向けのGLFW実装が不完全であり、将来のリリースで修正されることが期待されます。その機能がアプリケーションに不可欠でない限り、このエラーは無視できます。

このエラーを発生させる関数呼び出しは、エラーの発生と、存在する出力引数の更新以外には何も行いません。

◆ GLFW_PLATFORM_UNAVAILABLE

#define GLFW_PLATFORM_UNAVAILABLE   0x0001000E

初期化中に発生した場合、一致するプラットフォームが見つかりませんでした。GLFW_PLATFORM 初期化ヒントが GLFW_ANY_PLATFORM に設定されていた場合、Nullプラットフォームを除き、このライブラリバイナリがサポートするどのプラットフォームもGLFWが検出できませんでした。初期化ヒントが特定のプラットフォームに設定されていた場合、そのプラットフォームがこのライブラリバイナリでサポートされていないか、GLFWが検出できませんでした。

ネイティブアクセス関数から発生した場合、その関数が対象とするものとは異なるプラットフォーム用にGLFWが初期化されています。

分析
どのプラットフォームも検出できない状況は、通常macOS以外のUnixシステムでだけ発生します。ウィンドウシステムが実行されていないか、必要な環境変数を持たないターミナルからプログラムを実行した場合です。可能であれば別のプラットフォームへフォールバックするか、利用可能なプラットフォームを検出できなかったことをユーザーへ通知してください。

特定のプラットフォームを検出できない原因は上記と同じ場合もあれば、そのプラットフォームのサポートがコンパイル時に組み込まれていない場合もあります。特定のプラットフォームをライブラリバイナリがサポートしているか確認するには、glfwPlatformSupported を呼び出してください。