glfw3native.h (21201B)
1 /************************************************************************* 2 * GLFW 3.4 - www.glfw.org 3 * A library for OpenGL, window and input 4 *------------------------------------------------------------------------ 5 * Copyright (c) 2002-2006 Marcus Geelnard 6 * Copyright (c) 2006-2018 Camilla Löwy <elmindreda@glfw.org> 7 * 8 * This software is provided 'as-is', without any express or implied 9 * warranty. In no event will the authors be held liable for any damages 10 * arising from the use of this software. 11 * 12 * Permission is granted to anyone to use this software for any purpose, 13 * including commercial applications, and to alter it and redistribute it 14 * freely, subject to the following restrictions: 15 * 16 * 1. The origin of this software must not be misrepresented; you must not 17 * claim that you wrote the original software. If you use this software 18 * in a product, an acknowledgment in the product documentation would 19 * be appreciated but is not required. 20 * 21 * 2. Altered source versions must be plainly marked as such, and must not 22 * be misrepresented as being the original software. 23 * 24 * 3. This notice may not be removed or altered from any source 25 * distribution. 26 * 27 *************************************************************************/ 28 29 #ifndef _glfw3_native_h_ 30 #define _glfw3_native_h_ 31 32 #ifdef __cplusplus 33 extern "C" { 34 #endif 35 36 37 /************************************************************************* 38 * Doxygen documentation 39 *************************************************************************/ 40 41 /*! @file glfw3native.h 42 * @brief The header of the native access functions. 43 * 44 * This is the header file of the native access functions. See @ref native for 45 * more information. 46 */ 47 /*! @defgroup native Native access 48 * @brief Functions related to accessing native handles. 49 * 50 * **By using the native access functions you assert that you know what you're 51 * doing and how to fix problems caused by using them. If you don't, you 52 * shouldn't be using them.** 53 * 54 * Before the inclusion of @ref glfw3native.h, you may define zero or more 55 * window system API macro and zero or more context creation API macros. 56 * 57 * The chosen backends must match those the library was compiled for. Failure 58 * to do this will cause a link-time error. 59 * 60 * The available window API macros are: 61 * * `GLFW_EXPOSE_NATIVE_WIN32` 62 * * `GLFW_EXPOSE_NATIVE_COCOA` 63 * * `GLFW_EXPOSE_NATIVE_X11` 64 * * `GLFW_EXPOSE_NATIVE_WAYLAND` 65 * 66 * The available context API macros are: 67 * * `GLFW_EXPOSE_NATIVE_WGL` 68 * * `GLFW_EXPOSE_NATIVE_NSGL` 69 * * `GLFW_EXPOSE_NATIVE_GLX` 70 * * `GLFW_EXPOSE_NATIVE_EGL` 71 * * `GLFW_EXPOSE_NATIVE_OSMESA` 72 * 73 * These macros select which of the native access functions that are declared 74 * and which platform-specific headers to include. It is then up your (by 75 * definition platform-specific) code to handle which of these should be 76 * defined. 77 * 78 * If you do not want the platform-specific headers to be included, define 79 * `GLFW_NATIVE_INCLUDE_NONE` before including the @ref glfw3native.h header. 80 * 81 * @code 82 * #define GLFW_EXPOSE_NATIVE_WIN32 83 * #define GLFW_EXPOSE_NATIVE_WGL 84 * #define GLFW_NATIVE_INCLUDE_NONE 85 * #include <GLFW/glfw3native.h> 86 * @endcode 87 */ 88 89 90 /************************************************************************* 91 * System headers and types 92 *************************************************************************/ 93 94 #if !defined(GLFW_NATIVE_INCLUDE_NONE) 95 96 #if defined(GLFW_EXPOSE_NATIVE_WIN32) || defined(GLFW_EXPOSE_NATIVE_WGL) 97 /* This is a workaround for the fact that glfw3.h needs to export APIENTRY (for 98 * example to allow applications to correctly declare a GL_KHR_debug callback) 99 * but windows.h assumes no one will define APIENTRY before it does 100 */ 101 #if defined(GLFW_APIENTRY_DEFINED) 102 #undef APIENTRY 103 #undef GLFW_APIENTRY_DEFINED 104 #endif 105 #include <windows.h> 106 #endif 107 108 #if defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL) 109 #if defined(__OBJC__) 110 #import <Cocoa/Cocoa.h> 111 #else 112 #include <ApplicationServices/ApplicationServices.h> 113 #include <objc/objc.h> 114 #endif 115 #endif 116 117 #if defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX) 118 #include <X11/Xlib.h> 119 #include <X11/extensions/Xrandr.h> 120 #endif 121 122 #if defined(GLFW_EXPOSE_NATIVE_WAYLAND) 123 #include <wayland-client.h> 124 #endif 125 126 #if defined(GLFW_EXPOSE_NATIVE_WGL) 127 /* WGL is declared by windows.h */ 128 #endif 129 #if defined(GLFW_EXPOSE_NATIVE_NSGL) 130 /* NSGL is declared by Cocoa.h */ 131 #endif 132 #if defined(GLFW_EXPOSE_NATIVE_GLX) 133 /* This is a workaround for the fact that glfw3.h defines GLAPIENTRY because by 134 * default it also acts as an OpenGL header 135 * However, glx.h will include gl.h, which will define it unconditionally 136 */ 137 #if defined(GLFW_GLAPIENTRY_DEFINED) 138 #undef GLAPIENTRY 139 #undef GLFW_GLAPIENTRY_DEFINED 140 #endif 141 #include <GL/glx.h> 142 #endif 143 #if defined(GLFW_EXPOSE_NATIVE_EGL) 144 #include <EGL/egl.h> 145 #endif 146 #if defined(GLFW_EXPOSE_NATIVE_OSMESA) 147 /* This is a workaround for the fact that glfw3.h defines GLAPIENTRY because by 148 * default it also acts as an OpenGL header 149 * However, osmesa.h will include gl.h, which will define it unconditionally 150 */ 151 #if defined(GLFW_GLAPIENTRY_DEFINED) 152 #undef GLAPIENTRY 153 #undef GLFW_GLAPIENTRY_DEFINED 154 #endif 155 #include <GL/osmesa.h> 156 #endif 157 158 #endif /*GLFW_NATIVE_INCLUDE_NONE*/ 159 160 161 /************************************************************************* 162 * Functions 163 *************************************************************************/ 164 165 #if defined(GLFW_EXPOSE_NATIVE_WIN32) 166 /*! @brief Returns the adapter device name of the specified monitor. 167 * 168 * @return The UTF-8 encoded adapter device name (for example `\\.\DISPLAY1`) 169 * of the specified monitor, or `NULL` if an [error](@ref error_handling) 170 * occurred. 171 * 172 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref 173 * GLFW_PLATFORM_UNAVAILABLE. 174 * 175 * @thread_safety This function may be called from any thread. Access is not 176 * synchronized. 177 * 178 * @since Added in version 3.1. 179 * 180 * @ingroup native 181 */ 182 GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor); 183 184 /*! @brief Returns the display device name of the specified monitor. 185 * 186 * @return The UTF-8 encoded display device name (for example 187 * `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` if an 188 * [error](@ref error_handling) occurred. 189 * 190 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref 191 * GLFW_PLATFORM_UNAVAILABLE. 192 * 193 * @thread_safety This function may be called from any thread. Access is not 194 * synchronized. 195 * 196 * @since Added in version 3.1. 197 * 198 * @ingroup native 199 */ 200 GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor); 201 202 /*! @brief Returns the `HWND` of the specified window. 203 * 204 * @return The `HWND` of the specified window, or `NULL` if an 205 * [error](@ref error_handling) occurred. 206 * 207 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref 208 * GLFW_PLATFORM_UNAVAILABLE. 209 * 210 * @remark The `HDC` associated with the window can be queried with the 211 * [GetDC](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc) 212 * function. 213 * @code 214 * HDC dc = GetDC(glfwGetWin32Window(window)); 215 * @endcode 216 * This DC is private and does not need to be released. 217 * 218 * @thread_safety This function may be called from any thread. Access is not 219 * synchronized. 220 * 221 * @since Added in version 3.0. 222 * 223 * @ingroup native 224 */ 225 GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window); 226 #endif 227 228 #if defined(GLFW_EXPOSE_NATIVE_WGL) 229 /*! @brief Returns the `HGLRC` of the specified window. 230 * 231 * @return The `HGLRC` of the specified window, or `NULL` if an 232 * [error](@ref error_handling) occurred. 233 * 234 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref 235 * GLFW_PLATFORM_UNAVAILABLE and @ref GLFW_NO_WINDOW_CONTEXT. 236 * 237 * @remark The `HDC` associated with the window can be queried with the 238 * [GetDC](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc) 239 * function. 240 * @code 241 * HDC dc = GetDC(glfwGetWin32Window(window)); 242 * @endcode 243 * This DC is private and does not need to be released. 244 * 245 * @thread_safety This function may be called from any thread. Access is not 246 * synchronized. 247 * 248 * @since Added in version 3.0. 249 * 250 * @ingroup native 251 */ 252 GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window); 253 #endif 254 255 #if defined(GLFW_EXPOSE_NATIVE_COCOA) 256 /*! @brief Returns the `CGDirectDisplayID` of the specified monitor. 257 * 258 * @return The `CGDirectDisplayID` of the specified monitor, or 259 * `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred. 260 * 261 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref 262 * GLFW_PLATFORM_UNAVAILABLE. 263 * 264 * @thread_safety This function may be called from any thread. Access is not 265 * synchronized. 266 * 267 * @since Added in version 3.1. 268 * 269 * @ingroup native 270 */ 271 GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor); 272 273 /*! @brief Returns the `NSWindow` of the specified window. 274 * 275 * @return The `NSWindow` of the specified window, or `nil` if an 276 * [error](@ref error_handling) occurred. 277 * 278 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref 279 * GLFW_PLATFORM_UNAVAILABLE. 280 * 281 * @thread_safety This function may be called from any thread. Access is not 282 * synchronized. 283 * 284 * @since Added in version 3.0. 285 * 286 * @ingroup native 287 */ 288 GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window); 289 290 /*! @brief Returns the `NSView` of the specified window. 291 * 292 * @return The `NSView` of the specified window, or `nil` if an 293 * [error](@ref error_handling) occurred. 294 * 295 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref 296 * GLFW_PLATFORM_UNAVAILABLE. 297 * 298 * @thread_safety This function may be called from any thread. Access is not 299 * synchronized. 300 * 301 * @since Added in version 3.4. 302 * 303 * @ingroup native 304 */ 305 GLFWAPI id glfwGetCocoaView(GLFWwindow* window); 306 #endif 307 308 #if defined(GLFW_EXPOSE_NATIVE_NSGL) 309 /*! @brief Returns the `NSOpenGLContext` of the specified window. 310 * 311 * @return The `NSOpenGLContext` of the specified window, or `nil` if an 312 * [error](@ref error_handling) occurred. 313 * 314 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref 315 * GLFW_PLATFORM_UNAVAILABLE and @ref GLFW_NO_WINDOW_CONTEXT. 316 * 317 * @thread_safety This function may be called from any thread. Access is not 318 * synchronized. 319 * 320 * @since Added in version 3.0. 321 * 322 * @ingroup native 323 */ 324 GLFWAPI id glfwGetNSGLContext(GLFWwindow* window); 325 #endif 326 327 #if defined(GLFW_EXPOSE_NATIVE_X11) 328 /*! @brief Returns the `Display` used by GLFW. 329 * 330 * @return The `Display` used by GLFW, or `NULL` if an 331 * [error](@ref error_handling) occurred. 332 * 333 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref 334 * GLFW_PLATFORM_UNAVAILABLE. 335 * 336 * @thread_safety This function may be called from any thread. Access is not 337 * synchronized. 338 * 339 * @since Added in version 3.0. 340 * 341 * @ingroup native 342 */ 343 GLFWAPI Display* glfwGetX11Display(void); 344 345 /*! @brief Returns the `RRCrtc` of the specified monitor. 346 * 347 * @return The `RRCrtc` of the specified monitor, or `None` if an 348 * [error](@ref error_handling) occurred. 349 * 350 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref 351 * GLFW_PLATFORM_UNAVAILABLE. 352 * 353 * @thread_safety This function may be called from any thread. Access is not 354 * synchronized. 355 * 356 * @since Added in version 3.1. 357 * 358 * @ingroup native 359 */ 360 GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor); 361 362 /*! @brief Returns the `RROutput` of the specified monitor. 363 * 364 * @return The `RROutput` of the specified monitor, or `None` if an 365 * [error](@ref error_handling) occurred. 366 * 367 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref 368 * GLFW_PLATFORM_UNAVAILABLE. 369 * 370 * @thread_safety This function may be called from any thread. Access is not 371 * synchronized. 372 * 373 * @since Added in version 3.1. 374 * 375 * @ingroup native 376 */ 377 GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor); 378 379 /*! @brief Returns the `Window` of the specified window. 380 * 381 * @return The `Window` of the specified window, or `None` if an 382 * [error](@ref error_handling) occurred. 383 * 384 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref 385 * GLFW_PLATFORM_UNAVAILABLE. 386 * 387 * @thread_safety This function may be called from any thread. Access is not 388 * synchronized. 389 * 390 * @since Added in version 3.0. 391 * 392 * @ingroup native 393 */ 394 GLFWAPI Window glfwGetX11Window(GLFWwindow* window); 395 396 /*! @brief Sets the current primary selection to the specified string. 397 * 398 * @param[in] string A UTF-8 encoded string. 399 * 400 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref 401 * GLFW_PLATFORM_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR. 402 * 403 * @pointer_lifetime The specified string is copied before this function 404 * returns. 405 * 406 * @thread_safety This function must only be called from the main thread. 407 * 408 * @sa @ref clipboard 409 * @sa glfwGetX11SelectionString 410 * @sa glfwSetClipboardString 411 * 412 * @since Added in version 3.3. 413 * 414 * @ingroup native 415 */ 416 GLFWAPI void glfwSetX11SelectionString(const char* string); 417 418 /*! @brief Returns the contents of the current primary selection as a string. 419 * 420 * If the selection is empty or if its contents cannot be converted, `NULL` 421 * is returned and a @ref GLFW_FORMAT_UNAVAILABLE error is generated. 422 * 423 * @return The contents of the selection as a UTF-8 encoded string, or `NULL` 424 * if an [error](@ref error_handling) occurred. 425 * 426 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref 427 * GLFW_PLATFORM_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR. 428 * 429 * @pointer_lifetime The returned string is allocated and freed by GLFW. You 430 * should not free it yourself. It is valid until the next call to @ref 431 * glfwGetX11SelectionString or @ref glfwSetX11SelectionString, or until the 432 * library is terminated. 433 * 434 * @thread_safety This function must only be called from the main thread. 435 * 436 * @sa @ref clipboard 437 * @sa glfwSetX11SelectionString 438 * @sa glfwGetClipboardString 439 * 440 * @since Added in version 3.3. 441 * 442 * @ingroup native 443 */ 444 GLFWAPI const char* glfwGetX11SelectionString(void); 445 #endif 446 447 #if defined(GLFW_EXPOSE_NATIVE_GLX) 448 /*! @brief Returns the `GLXContext` of the specified window. 449 * 450 * @return The `GLXContext` of the specified window, or `NULL` if an 451 * [error](@ref error_handling) occurred. 452 * 453 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref 454 * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_UNAVAILABLE. 455 * 456 * @thread_safety This function may be called from any thread. Access is not 457 * synchronized. 458 * 459 * @since Added in version 3.0. 460 * 461 * @ingroup native 462 */ 463 GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window); 464 465 /*! @brief Returns the `GLXWindow` of the specified window. 466 * 467 * @return The `GLXWindow` of the specified window, or `None` if an 468 * [error](@ref error_handling) occurred. 469 * 470 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref 471 * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_UNAVAILABLE. 472 * 473 * @thread_safety This function may be called from any thread. Access is not 474 * synchronized. 475 * 476 * @since Added in version 3.2. 477 * 478 * @ingroup native 479 */ 480 GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window); 481 #endif 482 483 #if defined(GLFW_EXPOSE_NATIVE_WAYLAND) 484 /*! @brief Returns the `struct wl_display*` used by GLFW. 485 * 486 * @return The `struct wl_display*` used by GLFW, or `NULL` if an 487 * [error](@ref error_handling) occurred. 488 * 489 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref 490 * GLFW_PLATFORM_UNAVAILABLE. 491 * 492 * @thread_safety This function may be called from any thread. Access is not 493 * synchronized. 494 * 495 * @since Added in version 3.2. 496 * 497 * @ingroup native 498 */ 499 GLFWAPI struct wl_display* glfwGetWaylandDisplay(void); 500 501 /*! @brief Returns the `struct wl_output*` of the specified monitor. 502 * 503 * @return The `struct wl_output*` of the specified monitor, or `NULL` if an 504 * [error](@ref error_handling) occurred. 505 * 506 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref 507 * GLFW_PLATFORM_UNAVAILABLE. 508 * 509 * @thread_safety This function may be called from any thread. Access is not 510 * synchronized. 511 * 512 * @since Added in version 3.2. 513 * 514 * @ingroup native 515 */ 516 GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor); 517 518 /*! @brief Returns the main `struct wl_surface*` of the specified window. 519 * 520 * @return The main `struct wl_surface*` of the specified window, or `NULL` if 521 * an [error](@ref error_handling) occurred. 522 * 523 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref 524 * GLFW_PLATFORM_UNAVAILABLE. 525 * 526 * @thread_safety This function may be called from any thread. Access is not 527 * synchronized. 528 * 529 * @since Added in version 3.2. 530 * 531 * @ingroup native 532 */ 533 GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window); 534 #endif 535 536 #if defined(GLFW_EXPOSE_NATIVE_EGL) 537 /*! @brief Returns the `EGLDisplay` used by GLFW. 538 * 539 * @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an 540 * [error](@ref error_handling) occurred. 541 * 542 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. 543 * 544 * @remark Because EGL is initialized on demand, this function will return 545 * `EGL_NO_DISPLAY` until the first context has been created via EGL. 546 * 547 * @thread_safety This function may be called from any thread. Access is not 548 * synchronized. 549 * 550 * @since Added in version 3.0. 551 * 552 * @ingroup native 553 */ 554 GLFWAPI EGLDisplay glfwGetEGLDisplay(void); 555 556 /*! @brief Returns the `EGLContext` of the specified window. 557 * 558 * @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an 559 * [error](@ref error_handling) occurred. 560 * 561 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref 562 * GLFW_NO_WINDOW_CONTEXT. 563 * 564 * @thread_safety This function may be called from any thread. Access is not 565 * synchronized. 566 * 567 * @since Added in version 3.0. 568 * 569 * @ingroup native 570 */ 571 GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window); 572 573 /*! @brief Returns the `EGLSurface` of the specified window. 574 * 575 * @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an 576 * [error](@ref error_handling) occurred. 577 * 578 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref 579 * GLFW_NO_WINDOW_CONTEXT. 580 * 581 * @thread_safety This function may be called from any thread. Access is not 582 * synchronized. 583 * 584 * @since Added in version 3.0. 585 * 586 * @ingroup native 587 */ 588 GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window); 589 #endif 590 591 #if defined(GLFW_EXPOSE_NATIVE_OSMESA) 592 /*! @brief Retrieves the color buffer associated with the specified window. 593 * 594 * @param[in] window The window whose color buffer to retrieve. 595 * @param[out] width Where to store the width of the color buffer, or `NULL`. 596 * @param[out] height Where to store the height of the color buffer, or `NULL`. 597 * @param[out] format Where to store the OSMesa pixel format of the color 598 * buffer, or `NULL`. 599 * @param[out] buffer Where to store the address of the color buffer, or 600 * `NULL`. 601 * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an 602 * [error](@ref error_handling) occurred. 603 * 604 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref 605 * GLFW_NO_WINDOW_CONTEXT. 606 * 607 * @thread_safety This function may be called from any thread. Access is not 608 * synchronized. 609 * 610 * @since Added in version 3.3. 611 * 612 * @ingroup native 613 */ 614 GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height, int* format, void** buffer); 615 616 /*! @brief Retrieves the depth buffer associated with the specified window. 617 * 618 * @param[in] window The window whose depth buffer to retrieve. 619 * @param[out] width Where to store the width of the depth buffer, or `NULL`. 620 * @param[out] height Where to store the height of the depth buffer, or `NULL`. 621 * @param[out] bytesPerValue Where to store the number of bytes per depth 622 * buffer element, or `NULL`. 623 * @param[out] buffer Where to store the address of the depth buffer, or 624 * `NULL`. 625 * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an 626 * [error](@ref error_handling) occurred. 627 * 628 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref 629 * GLFW_NO_WINDOW_CONTEXT. 630 * 631 * @thread_safety This function may be called from any thread. Access is not 632 * synchronized. 633 * 634 * @since Added in version 3.3. 635 * 636 * @ingroup native 637 */ 638 GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height, int* bytesPerValue, void** buffer); 639 640 /*! @brief Returns the `OSMesaContext` of the specified window. 641 * 642 * @return The `OSMesaContext` of the specified window, or `NULL` if an 643 * [error](@ref error_handling) occurred. 644 * 645 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref 646 * GLFW_NO_WINDOW_CONTEXT. 647 * 648 * @thread_safety This function may be called from any thread. Access is not 649 * synchronized. 650 * 651 * @since Added in version 3.3. 652 * 653 * @ingroup native 654 */ 655 GLFWAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* window); 656 #endif 657 658 #ifdef __cplusplus 659 } 660 #endif 661 662 #endif /* _glfw3_native_h_ */ 663