### <aname="section1_1"></a> 1.1. Using global headers
### <aname="section1_1"></a> 1.1. Using global headers
GLM is a header-only library, and thus does not need to be compiled. We can use GLM's implementation of GLSL's mathematics functionality by including the `<glm/glm.hpp>` header:
GLM is a header-only library, and thus does not need to be compiled. We can use GLM's implementation of GLSL's mathematics functionality by including the `<glm/glm.hpp>` header:
GLM does not depend on external libraries or headers such as `<GL/gl.h>`, [`<GL/glcorearb.h>`](http://www.opengl.org/registry/api/GL/glcorearb.h), `<GLES3/gl3.h>`, `<GL/glu.h>`, or `<windows.h>`.
GLM does not depend on external libraries or headers such as `<GL/gl.h>`, [`<GL/glcorearb.h>`](http://www.opengl.org/registry/api/GL/glcorearb.h), `<GLES3/gl3.h>`, `<GL/glu.h>`, or `<windows.h>`.
GLM extends the core GLSL feature set with extensions. These extensions include: quaternion, transformation, spline, matrix inverse, color spaces, etc.
GLM extends the core GLSL feature set with extensions. These extensions include: quaternion, transformation, spline, matrix inverse, color spaces, etc.
@ -1578,6 +1590,8 @@ Add \*vec1 types.
`<glm/gtc/vec1.hpp>` need to be included to use these features.
`<glm/gtc/vec1.hpp>` need to be included to use these features.
From `GLM_GTC_matrix_transform` extension: `<glm/gtc/matrix_transform.hpp>`
From `GLM_GTC_matrix_transform` extension: `<glm/gtc/matrix_transform.hpp>`
---
---
<divstyle="page-break-after: always;"></div>
## <aname="section6"></a> 6. Known issues
## <aname="section6"></a> 6. Known issues
This section reports GLSL features that GLM can't accurately emulate due to language restrictions.
This section reports GLSL features that GLM can't accurately emulate due to language restrictions.
@ -1763,6 +1779,8 @@ ivec3 foo(const vec4 & v)
```
```
---
---
<divstyle="page-break-after: always;"></div>
## <aname="section7"></a> 7. FAQ
## <aname="section7"></a> 7. FAQ
### <aname="section7_1"></a> 7.1 Why GLM follows GLSL specification and conventions?
### <aname="section7_1"></a> 7.1 Why GLM follows GLSL specification and conventions?
@ -1835,6 +1853,8 @@ GLM has some C++ <a href="http://en.cppreference.com/w/cpp/language/constexpr">c
Unfortunately, GCC and Clang doesn't support SIMD instrinsics as constant expressions. To allow constant expressions on all vectors and matrices types, define `GLM_FORCE_PURE` before including GLM headers.
Unfortunately, GCC and Clang doesn't support SIMD instrinsics as constant expressions. To allow constant expressions on all vectors and matrices types, define `GLM_FORCE_PURE` before including GLM headers.
---
---
<divstyle="page-break-after: always;"></div>
## <aname="section8"></a> 8. Code samples
## <aname="section8"></a> 8. Code samples
This series of samples only shows various GLM features without consideration of any sort.
This series of samples only shows various GLM features without consideration of any sort.
@ -1969,6 +1989,8 @@ glm::vec3 lighting(intersection const& Intersection, material const& Material, l