00001
00002
00004
00005
00006
00007
00009
00010
00011
00013
00014 #ifndef glm_gtc_matrix_projection
00015 #define glm_gtc_matrix_projection
00016
00017
00018 #include "../glm.hpp"
00019 #include "../gtc/matrix_operation.hpp"
00020
00021 namespace glm
00022 {
00023 namespace test{
00024 bool main_gtc_matrix_projection();
00025 }
00026
00027 namespace gtc{
00029 namespace matrix_projection
00030 {
00031 using namespace gtc::matrix_operation;
00032
00035 template <typename T>
00036 detail::tmat4x4<T> ortho(
00037 T const & left,
00038 T const & right,
00039 T const & bottom,
00040 T const & top);
00041
00044 template <typename T>
00045 detail::tmat4x4<T> ortho(
00046 T const & left,
00047 T const & right,
00048 T const & bottom,
00049 T const & top,
00050 T const & zNear,
00051 T const & zFar);
00052
00055 template <typename T>
00056 detail::tmat4x4<T> frustum(
00057 T const & left,
00058 T const & right,
00059 T const & bottom,
00060 T const & top,
00061 T const & nearVal,
00062 T const & farVal);
00063
00066 template <typename T>
00067 detail::tmat4x4<T> perspective(
00068 T const & fovy,
00069 T const & aspect,
00070 T const & zNear,
00071 T const & zFar);
00072
00075 template <typename T, typename U>
00076 detail::tvec3<T> project(
00077 detail::tvec3<T> const & obj,
00078 detail::tmat4x4<T> const & model,
00079 detail::tmat4x4<T> const & proj,
00080 detail::tvec4<U> const & viewport);
00081
00084 template <typename T, typename U>
00085 detail::tvec3<T> unProject(
00086 detail::tvec3<T> const & win,
00087 detail::tmat4x4<T> const & model,
00088 detail::tmat4x4<T> const & proj,
00089 detail::tvec4<U> const & viewport);
00090
00091 }
00092 }
00093 }
00094
00095 #include "matrix_projection.inl"
00096
00097 namespace glm{using namespace gtc::matrix_projection;}
00098
00099 #endif//glm_gtc_matrix_projection