Skip to content

ネイティブサポート

ネイティブのアクセス関数を使用することで、自分が何をしているのか、そしてアクセス関数を使用することで発生する問題の修正方法を知っていることを保証することになる。そうでないなら、使うべきではありません。

glfw3native.hをインクルードする前に、0個以上のウィンドウシステムAPIマクロと0個以上のコンテキスト生成APIマクロを定義することができる。

選択したバックエンドは、ライブラリがコンパイルされたものと一致しなければならない。これを行わないと、リンク時にエラーが発生する。

利用可能なウィンドウAPIマクロは以下のとおりである:

  • GLFW_EXPOSE_NATIVE_WIN32
  • GLFW_EXPOSE_NATIVE_COCOA
  • GLFW_EXPOSE_NATIVE_X11
  • GLFW_EXPOSE_NATIVE_WAYLAND

The available context API macros are:

  • GLFW_EXPOSE_NATIVE_WGL
  • GLFW_EXPOSE_NATIVE_NSGL
  • GLFW_EXPOSE_NATIVE_GLX
  • GLFW_EXPOSE_NATIVE_EGL
  • GLFW_EXPOSE_NATIVE_OSMESA

これらのマクロは、どのネイティブ・アクセス関数を宣言し、どのプラット フォーム固有のヘッダーを含めるかを選択する。どの関数を定義するかは、(定義上、プラットフォーム固有の)コード次第です。

プラットフォーム固有のヘッダをインクルードしたくない場合は、glfw3native.h ヘッダをインクルードする前に GLFW_NATIVE_INCLUDE_NONE を定義してください。

c
#define GLFW_EXPOSE_NATIVE_WIN32
#define GLFW_EXPOSE_NATIVE_WGL
#define GLFW_NATIVE_INCLUDE_NONE
#include <GLFW/glfw3native.h>

関数

関数名説明
glfwGetWin32Adapter指定されたモニタのアダプタデバイス名を返します。
glfwGetWin32Monitor指定されたモニターの表示デバイス名を返します。
glfwGetWin32Window指定されたウィンドウのHWNDを返します。
glfwGetWGLContext指定されたウィンドウのHGLRCを返します。
glfwGetCocoaMonitor指定されたモニターの CGDirectDisplayID を返します。
glfwGetCocoaWindow指定されたウィンドウのNSWindowを返します。
glfwGetNSGLContext指定されたウィンドウの NSOpenGLContext を返します。
glfwGetX11DisplayGLFW が使用する Display を返す。
glfwGetX11Adapter指定されたモニターのRRCrtcを返す。
glfwGetX11Monitor指定されたモニターの RROutput を返す。
glfwGetX11Window指定したウィンドウのWindowを返します。
glfwSetX11SelectionString現在の主選択範囲を指定された文字列に設定する。
glfwGetX11SelectionString現在の一次選択範囲の内容を文字列として返す。
glfwGetGLXContext指定されたウィンドウの GLXContext を返します。
glfwGetGLXWindow指定されたウィンドウのGLXWindowを返します。
glfwGetWaylandDisplayGLFWが使用するwl_display*構造体を返す。
glfwGetWaylandMonitor指定されたモニターのwl_output*構造体を返す。
glfwGetWaylandWindow指定されたウィンドウのメイン構造体 wl_surface* を返します。
glfwGetEGLDisplayGLFWが使用するEGLDisplayを返す。
glfwGetEGLContext指定されたウィンドウの EGLContext を返します。
glfwGetEGLSurface指定されたウィンドウのEGLSurfaceを返します。
glfwGetOSMesaColorBuffer指定されたウィンドウに関連付けられたカラーバッファを取得します。
glfwGetOSMesaDepthBuffer指定されたウィンドウに関連付けられている深度バッファを取得します。
glfwGetOSMesaContext指定されたウィンドウのOSMesaContextを返します。
glfwGetWin32Adapter()
c
const char * glfwGetWin32Adapter(GLFWmonitor * monitor)

戻り値:

指定されたモニターの UTF-8 エンコードされたアダプタデバイス名 (例 \\.\DISPLAY1) またはエラーが発生した場合は NULL。

エラー:

考えられるエラーはGLFW_NOT_INITIALIZED。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.1で追加。

glfwGetWin32Monitor()
c
const char * glfwGetWin32Monitor(GLFWmonitor * monitor)

戻り値:

指定されたモニターのUTF-8エンコードされた表示デバイス名(例 \\.\DISPLAY1\Monitor0)、エラーが発生した場合はNULL。

エラー:

考えられるエラーはGLFW_NOT_INITIALIZED。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.1で追加。

glfwGetWin32Window()
c
HWND glfwGetWin32Window(GLFWwindow * window)

戻り値:

指定されたウィンドウのHWND、またはエラーが発生した場合はNULL。

エラー:

考えられるエラーはGLFW_NOT_INITIALIZED。

備考:

ウィンドウに関連付けられたHDCは、GetDC関数で照会できる。

c
HDC dc = GetDC(glfwGetWin32Window(window));

このDCは非公開であり、公開する必要はない。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.0で追加。

glfwGetWGLContext()
c
HGLRC glfwGetWGLContext(GLFWwindow * window)

戻り値:

指定されたウィンドウのHGLRC、またはエラーが発生した場合はNULL。

エラー:

考えられるエラーは GLFW_NO_WINDOW_CONTEXT と GLFW_NOT_INITIALIZED です。

備考:

ウィンドウに関連付けられたHDCは、GetDC関数で照会できる。

c
HDC dc = GetDC(glfwGetWin32Window(window));

このDCは非公開であり、公開する必要はない。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.0で追加。

glfwGetCocoaMonitor()
c
CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor * monitor)

戻り値:

指定されたモニターのCGDirectDisplayID、またはエラーが発生した場合はkCGNullDirectDisplay。

エラー:

考えられるエラーはGLFW_NOT_INITIALIZED。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.1で追加。

glfwGetCocoaWindow()
c
id glfwGetCocoaWindow(GLFWwindow * window)

戻り値:

指定されたウィンドウのNSWindow、またはエラーが発生した場合はnil。

エラー:

考えられるエラーはGLFW_NOT_INITIALIZED。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.0で追加。

glfwGetNSGLContext()
c
id glfwGetNSGLContext(GLFWwindow * window)

戻り値:

指定されたウィンドウの NSOpenGLContext、またはエラーが発生した場合は nil。

エラー:

考えられるエラーは GLFW_NO_WINDOW_CONTEXT と GLFW_NOT_INITIALIZED です。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.0で追加。

glfwGetX11Display()
c
Display * glfwGetX11Display(void )

戻り値:

GLFWが使用するDisplay、エラーが発生した場合はNULL。

エラー:

考えられるエラーはGLFW_NOT_INITIALIZED。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.0で追加。

glfwGetX11Adapter()
c
RRCrtc glfwGetX11Adapter(GLFWmonitor * monitor)

戻り値:

指定されたモニターのRRCrtc、またはエラーが発生した場合はNone。

エラー:

考えられるエラーはGLFW_NOT_INITIALIZED。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.1で追加。

glfwGetX11Monitor()
c
RROutput glfwGetX11Monitor(GLFWmonitor * monitor)

戻り値:

指定されたモニターのRROutput、またはエラーが発生した場合はNone。

エラー:

考えられるエラーはGLFW_NOT_INITIALIZED。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.1で追加。

glfwGetX11Window()
c
Window glfwGetX11Window(GLFWwindow * window)

戻り値:

指定したウィンドウのWindow、エラーが発生した場合はNone。

エラー:

考えられるエラーはGLFW_NOT_INITIALIZED。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.0で追加。

glfwSetX11SelectionString()
c
void glfwSetX11SelectionString(const char * string)

引数:

  • [in] string: UTF-8でエンコードされた文字列。

エラー:

起こりうるエラーはGLFW_NOT_INITIALIZEDとGLFW_PLATFORM_ERRORである。

ポインタの寿命:

指定された文字列は、この関数が戻る前にコピーされる。

スレッドセーフ:

この関数はメインスレッドからのみ呼び出されなければならない。

参照:

  • Clipboard input and output
  • glfwGetX11SelectionString
  • glfwSetClipboardString

追加:

バージョン3.3で追加。

glfwGetX11SelectionString()

選択範囲が空であるか、その内容が変換できない場合、NULL が返され、 GLFW_FORMAT_UNAVAILABLE エラーが発生する。

c
const char * glfwGetX11SelectionString(void )

戻り値:

UTF-8エンコードされた文字列としての選択内容の内容、またはエラーが発生した場合はNULL。

エラー:

起こりうるエラーはGLFW_NOT_INITIALIZEDとGLFW_PLATFORM_ERRORである。

ポインタの寿命:

返された文字列はGLFWによって割り当てられ、解放される。自分で解放してはいけない.それは,次にglfwGetX11SelectionStringまたはglfwSetX11SelectionStringを呼ぶか,ライブラリが終了するまで有効である.

スレッドセーフ:

この関数はメインスレッドからのみ呼び出されなければならない。

参照:

  • Clipboard input and output
  • glfwSetX11SelectionString
  • glfwGetClipboardString

追加:

バージョン3.3で追加。

glfwGetGLXContext()
c
GLXContext glfwGetGLXContext(GLFWwindow * window)

戻り値:

指定されたウィンドウのGLXContext、またはエラーが発生した場合はNULL。

エラー:

考えられるエラーは GLFW_NO_WINDOW_CONTEXT と GLFW_NOT_INITIALIZED です。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.0で追加。

glfwGetGLXWindow()
c
GLXWindow glfwGetGLXWindow(GLFWwindow * window)

戻り値:

指定されたウィンドウのGLXWindow、またはエラーが発生した場合はNone。

エラー:

考えられるエラーは GLFW_NO_WINDOW_CONTEXT と GLFW_NOT_INITIALIZED です。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.2で追加。

glfwGetWaylandDisplay()
c
struct wl_display * glfwGetWaylandDisplay(void)

戻り値:

GLFWが使用するwl_display*構造体、またはエラーが発生した場合はNULL。

エラー:

考えられるエラーはGLFW_NOT_INITIALIZED。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.2で追加。

glfwGetWaylandMonitor()
c
struct wl_output * glfwGetWaylandMonitor(GLFWmonitor * monitor)

戻り値:

指定されたモニターのwl_output*構造体、またはエラーが発生した場合はNULL。

エラー:

考えられるエラーはGLFW_NOT_INITIALIZED。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.2で追加。

glfwGetWaylandWindow()
c
struct wl_surface * glfwGetWaylandWindow(GLFWwindow * window)

戻り値:

指定されたウィンドウのメイン構造体 wl_surface* またはエラーが発生した場合は NULL。

エラー:

Possible errors include GLFW_NOT_INITIALIZED.

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.2で追加。

glfwGetEGLDisplay()
c
EGLDisplay glfwGetEGLDisplay(void)

戻り値:

GLFWが使用するEGLDisplay、エラーが発生した場合はEGL_NO_DISPLAY。

エラー:

考えられるエラーはGLFW_NOT_INITIALIZED。

備考:

EGLはオンデマンドで初期化されるため、EGLを介して最初のコンテキストが作成されるまで、この関数はEGL_NO_DISPLAYを返す。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.0で追加。

glfwGetEGLContext()
c
EGLContext glfwGetEGLContext(GLFWwindow * window)

戻り値:

指定されたウィンドウのEGLContext、エラーが発生した場合はEGL_NO_CONTEXT。

エラー:

考えられるエラーは GLFW_NO_WINDOW_CONTEXT と GLFW_NOT_INITIALIZED です。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.0で追加。

glfwGetEGLSurface()
c
EGLSurface glfwGetEGLSurface(GLFWwindow * window)

戻り値:

指定されたウィンドウのEGLSurface、エラーが発生した場合はEGL_NO_SURFACE。

エラー:

考えられるエラーは GLFW_NO_WINDOW_CONTEXT と GLFW_NOT_INITIALIZED です。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.0で追加。

glfwGetOSMesaColorBuffer()
c
int glfwGetOSMesaColorBuffer(GLFWwindow * window, int * width, int * height, int * format, void ** buffer)

引数:

  • [in] window: カラーバッファを取得するウィンドウ。
  • [out] width: カラーバッファの幅を格納する場所、または NULL。
  • [out] height: カラーバッファの高さを格納する場所、または NULL。
  • [out] format: カラーバッファのOSMesaピクセルフォーマットを格納する場所、またはNULL。
  • [out] buffer: カラーバッファのアドレスを格納する場所、またはNULL。

戻り値:

成功すればGLFW_TRUE、エラーが発生すればGLFW_FALSE。

エラー:

考えられるエラーは GLFW_NO_WINDOW_CONTEXT と GLFW_NOT_INITIALIZED です。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.3で追加。

glfwGetOSMesaDepthBuffer()
c
int glfwGetOSMesaDepthBuffer(GLFWwindow * window, int * width, int * height, int * bytesPerValue, void ** buffer)

引数:

  • [in] window: 深度バッファを取得するウィンドウ。
  • [out] width: デプスバッファの幅を格納する場所、またはNULL。
  • [out] height: 深度バッファの高さを格納する場所、またはNULL。
  • [out] bytes: PerValue深度バッファ要素ごとのバイト数を格納する場所、またはNULL。
  • [out] buffer: デプスバッファのアドレスを格納する場所、またはNULL。

戻り値:

成功すればGLFW_TRUE、エラーが発生すればGLFW_FALSE。

エラー:

考えられるエラーは GLFW_NO_WINDOW_CONTEXT と GLFW_NOT_INITIALIZED です。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.3で追加。

glfwGetOSMesaContext()
c
OSMesaContext glfwGetOSMesaContext(GLFWwindow * window)

戻り値:

指定されたウィンドウの OSMesaContext、またはエラーが発生した場合は NULL。

エラー:

考えられるエラーは GLFW_NO_WINDOW_CONTEXT と GLFW_NOT_INITIALIZED です。

スレッドセーフ:

この関数はどのスレッドからでも呼び出すことができる。アクセスは同期化されない。

追加:

バージョン3.3で追加。