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 valType> 
00036                 detail::tmat4x4<valType> ortho(
00037                         valType const & left, 
00038                         valType const & right, 
00039                         valType const & bottom, 
00040                         valType const & top);
00041 
00044                 template <typename valType> 
00045                 detail::tmat4x4<valType> ortho(
00046                         valType const & left, 
00047                         valType const & right, 
00048                         valType const & bottom, 
00049                         valType const & top, 
00050                         valType const & zNear, 
00051                         valType const & zFar);
00052 
00055                 template <typename valType> 
00056                 detail::tmat4x4<valType> frustum(
00057                         valType const & left, 
00058                         valType const & right, 
00059                         valType const & bottom, 
00060                         valType const & top, 
00061                         valType const & nearVal, 
00062                         valType const & farVal);
00063 
00066                 template <typename valType> 
00067                 detail::tmat4x4<valType> perspective(
00068                         valType const & fovy, 
00069                         valType const & aspect, 
00070                         valType const & zNear, 
00071                         valType const & zFar);
00072 
00075                 template <typename valTypeT, typename valTypeU> 
00076                 detail::tvec3<valTypeT> project(
00077                         detail::tvec3<valTypeT> const & obj, 
00078                         detail::tmat4x4<valTypeT> const & model, 
00079                         detail::tmat4x4<valTypeT> const & proj, 
00080                         detail::tvec4<valTypeU> const & viewport);
00081 
00084                 template <typename valTypeT, typename valTypeU> 
00085                 detail::tvec3<valTypeT> unProject(
00086                         detail::tvec3<valTypeT> const & win, 
00087                         detail::tmat4x4<valTypeT> const & model, 
00088                         detail::tmat4x4<valTypeT> const & proj, 
00089                         detail::tvec4<valTypeU> const & viewport);
00090 
00091     }
00092     }
00093 }
00094 
00095 #define GLM_GTC_matrix_projection  namespace gtc::matrix_projection
00096 #ifndef GLM_GTC_GLOBAL
00097 namespace glm {using GLM_GTC_matrix_projection;}
00098 #endif//GLM_GTC_GLOBAL
00099 
00100 #include "matrix_projection.inl"
00101 
00102 #endif//glm_gtc_matrix_projection