More compile options docs

This commit is contained in:
MindSpunk 2018-12-15 14:36:49 +11:00 committed by Sébastien Crozet
parent 8af8d6b202
commit ffd3dd5b68

View File

@ -91,6 +91,74 @@
This must be used with care! This is actually the recommended method to convert between homogeneous transformations generated by `nalgebra-glm` and
specific transformation types from **nalgebra** like `Isometry3`. Just be careful you know your conversions make sense.
### Compile Features/Options
There are a few compile features that alters the default behaviour of some functions. The current set of compile options includes:
* opengl_projection
* vulkan_projection
* directx_projection
* projection_y_flip
* left_hand_default
* right_hand_default
* zero_to_one_clip_default
* negone_to_one_clip_default
The default is to compile with the `opengl_projection` feature enabled
#### opengl_projection
This is a "macro" feature that exists as an alias to `right_hand_default` and
`negone_to_one_clip_default`
#### vulkan_projection
This is a "macro" feature that exists as an alias to `right_hand_default`,
`zero_to_one_clip_default` and `projection_y_flip`
#### directx_projection
This is a "macro" feature that exists as an alias to `left_hand_default` and
`zero_to_one_clip_default`
#### projection_y_flip
Applies an implicit `mat[(1,1)] *= -1` to all projection matrices created through the
nalgebra-glm interface. This feature should be enabled when using Vulkan so the generated
matrices conform to Vulkan's NDC (normalized device coordinates).
#### left_hand_default / right_hand_default
These two options are used to change the default handedness of the coordinate system the library
will use. Depending on which option is set it would cause a function like `ortho` to switch
between using `ortho_rh` and `ortho_lh`.
DO NOT set both of these options at the same time. There is no guarantee that all functions will
follow the same convention if you were to do so
#### zero_to_one_clip_default / negone_to_one_clip_default
These options are used to change the default depth range for projection matrices generated by
the nalgebra-glm interface. Depending on which option is set functions like `ortho` will
statically switch between calling `ortho_zo` and `ortho_no`.
DO NOT set both of these options at the same time. There is no guarantee that all functions will
follow the same convention if you were to do so
#### Functions Affected
* [`perspective`](fn.perspective.html)
* [`perspective_no`](fn.perspective_no.html)
* [`perspective_zo`](fn.perspective_zo.html)
* [`perspective_rh`](fn.perspective_rh.html)
* [`perspective_lh`](fn.perspective_lh.html)
* [`perspective_fov`](fn.perspective_fov.html)
* [`perspective_fov_no`](fn.perspective_fov_no.html)
* [`perspective_fov_zo`](fn.perspective_fov_zo.html)
* [`perspective_fov_rh`](fn.perspective_fov_rh.html)
* [`perspective_fov_lh`](fn.perspective_fov_lh.html)
* [`ortho`](fn.ortho.html)
* [`ortho_no`](fn.ortho_no.html)
* [`ortho_zo`](fn.ortho_zo.html)
* [`ortho_rh`](fn.ortho_rh.html)
* [`ortho_lh`](fn.ortho_lh.html)
* [`project`](fn.project.html)
* [`unproject`](fn.unproject.html)
* [`look_at`](fn.look_at.html)
* [`quat_look_at`](fn.quat_look_at.html)
### Should I use nalgebra or nalgebra-glm?
Well that depends on your tastes and your background. **nalgebra** is more powerful overall since it allows stronger typing,
and goes much further than simple computer graphics math. However, has a bit of a learning curve for