| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -16,8 +16,9 @@ required to create full screen windows with GLFW 3. | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					The GLFW 3 header is named @ref glfw3.h and moved to the `GLFW` directory, to | 
					 | 
					 | 
					 | 
					The GLFW 3 header is named @ref glfw3.h and moved to the `GLFW` directory, to | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					avoid collisions with the headers of other major versions.  Similarly, the GLFW | 
					 | 
					 | 
					 | 
					avoid collisions with the headers of other major versions.  Similarly, the GLFW | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					3 library is named `glfw3,` except when it's installed as a shared library on | 
					 | 
					 | 
					 | 
					3 library is named `glfw3,` except when it's installed as a shared library on | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					Unix-like systems, where it uses the | 
					 | 
					 | 
					 | 
					Unix-like systems, where it uses the [soname][] `libglfw.so.3`. | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					[soname](https://en.wikipedia.org/wiki/soname) `libglfw.so.3`. | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					[soname]: https://en.wikipedia.org/wiki/soname | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					__Old syntax__ | 
					 | 
					 | 
					 | 
					__Old syntax__ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					```c | 
					 | 
					 | 
					 | 
					```c | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -36,18 +37,20 @@ The threading functions have been removed, including the per-thread sleep | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					function.  They were fairly primitive, under-used, poorly integrated and took | 
					 | 
					 | 
					 | 
					function.  They were fairly primitive, under-used, poorly integrated and took | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					time away from the focus of GLFW (i.e.  context, input and window).  There are | 
					 | 
					 | 
					 | 
					time away from the focus of GLFW (i.e.  context, input and window).  There are | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					better threading libraries available and native threading support is available | 
					 | 
					 | 
					 | 
					better threading libraries available and native threading support is available | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					in both [C++11](https://en.cppreference.com/w/cpp/thread) and | 
					 | 
					 | 
					 | 
					in both [C++11][] and [C11][], both of which are gaining traction. | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					[C11](https://en.cppreference.com/w/c/thread), both of which are gaining | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					traction. | 
					 | 
					 | 
					 | 
					[C++11]: https://en.cppreference.com/w/cpp/thread | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					[C11]: https://en.cppreference.com/w/c/thread | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					If you wish to use the C++11 or C11 facilities but your compiler doesn't yet | 
					 | 
					 | 
					 | 
					If you wish to use the C++11 or C11 facilities but your compiler doesn't yet | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					support them, see the | 
					 | 
					 | 
					 | 
					support them, see the [TinyThread++][] and [TinyCThread][] projects created by | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					[TinyThread++](https://gitorious.org/tinythread/tinythreadpp) and | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					[TinyCThread](https://github.com/tinycthread/tinycthread) projects created by | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					the original author of GLFW.  These libraries implement a usable subset of the | 
					 | 
					 | 
					 | 
					the original author of GLFW.  These libraries implement a usable subset of the | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					threading APIs in C++11 and C11, and in fact some GLFW 3 test programs use | 
					 | 
					 | 
					 | 
					threading APIs in C++11 and C11, and in fact some GLFW 3 test programs use | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					TinyCThread. | 
					 | 
					 | 
					 | 
					TinyCThread. | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					[TinyThread++]: https://gitorious.org/tinythread/tinythreadpp | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					[TinyCThread]: https://github.com/tinycthread/tinycthread | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					However, GLFW 3 has better support for _use from multiple threads_ than GLFW | 
					 | 
					 | 
					 | 
					However, GLFW 3 has better support for _use from multiple threads_ than GLFW | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					2 had.  Contexts can be made current on any thread, although only a single | 
					 | 
					 | 
					 | 
					2 had.  Contexts can be made current on any thread, although only a single | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					thread at a time, and the documentation explicitly states which functions may be | 
					 | 
					 | 
					 | 
					thread at a time, and the documentation explicitly states which functions may be | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -84,13 +87,14 @@ __Removed functions__ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					### Removal of GLFWCALL macro {#moving_stdcall} | 
					 | 
					 | 
					 | 
					### Removal of GLFWCALL macro {#moving_stdcall} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					The `GLFWCALL` macro, which made callback functions use | 
					 | 
					 | 
					 | 
					The `GLFWCALL` macro, which made callback functions use [\_\_stdcall][stdcall] | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					[\_\_stdcall](https://msdn.microsoft.com/en-us/library/zxk0tw93.aspx) on Windows, | 
					 | 
					 | 
					 | 
					on Windows, has been removed.  GLFW is written in C, not Pascal.  Removing this | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					has been removed.  GLFW is written in C, not Pascal.  Removing this macro means | 
					 | 
					 | 
					 | 
					macro means there's one less thing for application programmers to remember, i.e. | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					there's one less thing for application programmers to remember, i.e. the | 
					 | 
					 | 
					 | 
					the requirement to mark all callback functions with `GLFWCALL`.  It also | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					requirement to mark all callback functions with `GLFWCALL`.  It also simplifies | 
					 | 
					 | 
					 | 
					simplifies the creation of DLLs and DLL link libraries, as there's no need to | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					the creation of DLLs and DLL link libraries, as there's no need to explicitly | 
					 | 
					 | 
					 | 
					explicitly disable `@n` entry point suffixes. | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					disable `@n` entry point suffixes. | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					[stdcall]: https://msdn.microsoft.com/en-us/library/zxk0tw93.aspx | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					__Old syntax__ | 
					 | 
					 | 
					 | 
					__Old syntax__ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					```c | 
					 | 
					 | 
					 | 
					```c | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -109,7 +113,9 @@ Because GLFW 3 supports multiple windows, window handle parameters have been | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					added to all window-related GLFW functions and callbacks.  The handle of | 
					 | 
					 | 
					 | 
					added to all window-related GLFW functions and callbacks.  The handle of | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					a newly created window is returned by @ref glfwCreateWindow (formerly | 
					 | 
					 | 
					 | 
					a newly created window is returned by @ref glfwCreateWindow (formerly | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					`glfwOpenWindow`).  Window handles are pointers to the | 
					 | 
					 | 
					 | 
					`glfwOpenWindow`).  Window handles are pointers to the | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					[opaque](https://en.wikipedia.org/wiki/Opaque_data_type) type @ref GLFWwindow. | 
					 | 
					 | 
					 | 
					[opaque][opaque-type] type @ref GLFWwindow. | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					[opaque-type]: https://en.wikipedia.org/wiki/Opaque_data_type | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					__Old syntax__ | 
					 | 
					 | 
					 | 
					__Old syntax__ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					```c | 
					 | 
					 | 
					 | 
					```c | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -129,7 +135,7 @@ instead of passing `GLFW_FULLSCREEN` you specify which monitor you wish the | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					window to use.  The @ref glfwGetPrimaryMonitor function returns the monitor that | 
					 | 
					 | 
					 | 
					window to use.  The @ref glfwGetPrimaryMonitor function returns the monitor that | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					GLFW 2 would have selected, but there are many other | 
					 | 
					 | 
					 | 
					GLFW 2 would have selected, but there are many other | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					[monitor functions](@ref monitor_guide).  Monitor handles are pointers to the | 
					 | 
					 | 
					 | 
					[monitor functions](@ref monitor_guide).  Monitor handles are pointers to the | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					[opaque](https://en.wikipedia.org/wiki/Opaque_data_type) type @ref GLFWmonitor. | 
					 | 
					 | 
					 | 
					[opaque][opaque-type] type @ref GLFWmonitor. | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					__Old basic full screen__ | 
					 | 
					 | 
					 | 
					__Old basic full screen__ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					```c | 
					 | 
					 | 
					 | 
					```c | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -376,14 +382,15 @@ glfwGetJoystickAxes and @ref glfwGetJoystickButtons functions. | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					### Win32 MBCS support {#moving_mbcs} | 
					 | 
					 | 
					 | 
					### Win32 MBCS support {#moving_mbcs} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					The Win32 port of GLFW 3 will not compile in | 
					 | 
					 | 
					 | 
					The Win32 port of GLFW 3 will not compile in [MBCS mode][MBCS].  However, | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					[MBCS mode](https://msdn.microsoft.com/en-us/library/5z097dxa.aspx). | 
					 | 
					 | 
					 | 
					because the use of the Unicode version of the Win32 API doesn't affect the | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					However, because the use of the Unicode version of the Win32 API doesn't affect | 
					 | 
					 | 
					 | 
					process as a whole, but only those windows created using it, it's perfectly | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					the process as a whole, but only those windows created using it, it's perfectly | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					possible to call MBCS functions from other parts of the same application. | 
					 | 
					 | 
					 | 
					possible to call MBCS functions from other parts of the same application. | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					Therefore, even if an application using GLFW has MBCS mode code, there's no need | 
					 | 
					 | 
					 | 
					Therefore, even if an application using GLFW has MBCS mode code, there's no need | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					for GLFW itself to support it. | 
					 | 
					 | 
					 | 
					for GLFW itself to support it. | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					[MBCS]: https://msdn.microsoft.com/en-us/library/5z097dxa.aspx | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					### Support for versions of Windows older than XP {#moving_windows} | 
					 | 
					 | 
					 | 
					### Support for versions of Windows older than XP {#moving_windows} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -429,10 +436,12 @@ invalidating any window handles you may still have. | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					### GLU header inclusion {#moving_glu} | 
					 | 
					 | 
					 | 
					### GLU header inclusion {#moving_glu} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					GLFW 3 does not by default include the GLU header and GLU itself has been | 
					 | 
					 | 
					 | 
					GLFW 3 does not by default include the GLU header and GLU itself has been | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					deprecated by [Khronos](https://en.wikipedia.org/wiki/Khronos_Group).  __New | 
					 | 
					 | 
					 | 
					deprecated by [Khronos][].  __New projects should not use GLU__, but if you need | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					projects should not use GLU__, but if you need it for legacy code that | 
					 | 
					 | 
					 | 
					it for legacy code that has been moved to GLFW 3, you can request that the GLFW | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					has been moved to GLFW 3, you can request that the GLFW header includes it by | 
					 | 
					 | 
					 | 
					header includes it by defining @ref GLFW_INCLUDE_GLU before the inclusion of the | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					defining @ref GLFW_INCLUDE_GLU before the inclusion of the GLFW header. | 
					 | 
					 | 
					 | 
					GLFW header. | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					[Khronos]: https://en.wikipedia.org/wiki/Khronos_Group | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					__Old syntax__ | 
					 | 
					 | 
					 | 
					__Old syntax__ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					```c | 
					 | 
					 | 
					 | 
					```c | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -446,11 +455,13 @@ __New syntax__ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					``` | 
					 | 
					 | 
					 | 
					``` | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					There are many libraries that offer replacements for the functionality offered | 
					 | 
					 | 
					 | 
					There are many libraries that offer replacements for the functionality offered | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					by GLU.  For the matrix helper functions, see math libraries like | 
					 | 
					 | 
					 | 
					by GLU.  For the matrix helper functions, see math libraries like [GLM][] (for | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					[GLM](https://github.com/g-truc/glm) (for C++), | 
					 | 
					 | 
					 | 
					C++), [linmath.h][] (for C) and others.  For the tessellation functions, see for | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					[linmath.h](https://github.com/datenwolf/linmath.h) (for C) and others.  For the | 
					 | 
					 | 
					 | 
					example [libtess2][]. | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					tessellation functions, see for example | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					[libtess2](https://github.com/memononen/libtess2). | 
					 | 
					 | 
					 | 
					[GLM]: https://github.com/g-truc/glm | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					[linmath.h]: https://github.com/datenwolf/linmath.h | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					[libtess2]: https://github.com/memononen/libtess2 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					## Name change tables {#moving_tables} | 
					 | 
					 | 
					 | 
					## Name change tables {#moving_tables} | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |