00001
00002
00004
00005
00006
00007
00009
00010 #ifndef glm_core_type_mat3x4
00011 #define glm_core_type_mat3x4
00012
00013 #include "type_mat.hpp"
00014
00015 namespace glm{
00016 namespace detail
00017 {
00018 template <typename T> struct tvec1;
00019 template <typename T> struct tvec2;
00020 template <typename T> struct tvec3;
00021 template <typename T> struct tvec4;
00022 template <typename T> struct tmat2x2;
00023 template <typename T> struct tmat2x3;
00024 template <typename T> struct tmat2x4;
00025 template <typename T> struct tmat3x2;
00026 template <typename T> struct tmat3x3;
00027 template <typename T> struct tmat3x4;
00028 template <typename T> struct tmat4x2;
00029 template <typename T> struct tmat4x3;
00030 template <typename T> struct tmat4x4;
00031
00034 template <typename T>
00035 struct tmat3x4
00036 {
00037 enum ctor{null};
00038 typedef T value_type;
00039 typedef std::size_t size_type;
00040 typedef tvec4<T> col_type;
00041 typedef tvec3<T> row_type;
00042 static GLM_FUNC_DECL size_type col_size();
00043 static GLM_FUNC_DECL size_type row_size();
00044
00045 typedef tmat3x4<T> type;
00046 typedef tmat4x3<T> transpose_type;
00047
00048 private:
00049
00050 col_type value[3];
00051
00052 public:
00053
00054 GLM_FUNC_DECL tmat3x4();
00055 GLM_FUNC_DECL tmat3x4(tmat3x4 const & m);
00056
00057 GLM_FUNC_DECL explicit tmat3x4(
00058 ctor Null);
00059 GLM_FUNC_DECL explicit tmat3x4(
00060 value_type const & s);
00061 GLM_FUNC_DECL explicit tmat3x4(
00062 value_type const & x0, value_type const & y0, value_type const & z0, value_type const & w0,
00063 value_type const & x1, value_type const & y1, value_type const & z1, value_type const & w1,
00064 value_type const & x2, value_type const & y2, value_type const & z2, value_type const & w2);
00065 GLM_FUNC_DECL explicit tmat3x4(
00066 col_type const & v0,
00067 col_type const & v1,
00068 col_type const & v2);
00069
00071
00072 template <typename U>
00073 GLM_FUNC_DECL explicit tmat3x4(
00074 U const & x);
00075
00076 template
00077 <
00078 typename X1, typename Y1, typename Z1, typename W1,
00079 typename X2, typename Y2, typename Z2, typename W2,
00080 typename X3, typename Y3, typename Z3, typename W3
00081 >
00082 GLM_FUNC_DECL explicit tmat3x4(
00083 X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1,
00084 X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2,
00085 X3 const & x3, Y3 const & y3, Z3 const & z3, W3 const & w3);
00086
00087 template <typename V1, typename V2, typename V3>
00088 GLM_FUNC_DECL explicit tmat3x4(
00089 tvec4<V1> const & v1,
00090 tvec4<V2> const & v2,
00091 tvec4<V3> const & v3);
00092
00093
00094 template <typename U>
00095 GLM_FUNC_DECL explicit tmat3x4(tmat3x4<U> const & m);
00096
00097 GLM_FUNC_DECL explicit tmat3x4(tmat2x2<T> const & x);
00098 GLM_FUNC_DECL explicit tmat3x4(tmat3x3<T> const & x);
00099 GLM_FUNC_DECL explicit tmat3x4(tmat4x4<T> const & x);
00100 GLM_FUNC_DECL explicit tmat3x4(tmat2x3<T> const & x);
00101 GLM_FUNC_DECL explicit tmat3x4(tmat3x2<T> const & x);
00102 GLM_FUNC_DECL explicit tmat3x4(tmat2x4<T> const & x);
00103 GLM_FUNC_DECL explicit tmat3x4(tmat4x2<T> const & x);
00104 GLM_FUNC_DECL explicit tmat3x4(tmat4x3<T> const & x);
00105
00106
00107 col_type & operator[](size_type i);
00108 col_type const & operator[](size_type i) const;
00109
00110
00111 GLM_FUNC_DECL tmat3x4<T> & operator= (tmat3x4<T> const & m);
00112 template <typename U>
00113 GLM_FUNC_DECL tmat3x4<T> & operator= (tmat3x4<U> const & m);
00114 template <typename U>
00115 GLM_FUNC_DECL tmat3x4<T> & operator+= (U const & s);
00116 template <typename U>
00117 GLM_FUNC_DECL tmat3x4<T> & operator+= (tmat3x4<U> const & m);
00118 template <typename U>
00119 GLM_FUNC_DECL tmat3x4<T> & operator-= (U const & s);
00120 template <typename U>
00121 GLM_FUNC_DECL tmat3x4<T> & operator-= (tmat3x4<U> const & m);
00122 template <typename U>
00123 GLM_FUNC_DECL tmat3x4<T> & operator*= (U const & s);
00124 template <typename U>
00125 GLM_FUNC_DECL tmat3x4<T> & operator*= (tmat3x4<U> const & m);
00126 template <typename U>
00127 GLM_FUNC_DECL tmat3x4<T> & operator/= (U const & s);
00128
00129 GLM_FUNC_DECL tmat3x4<T> & operator++ ();
00130 GLM_FUNC_DECL tmat3x4<T> & operator-- ();
00131 };
00132
00133
00134 template <typename T>
00135 tmat3x4<T> operator+ (
00136 tmat3x4<T> const & m,
00137 typename tmat3x4<T>::value_type const & s);
00138
00139 template <typename T>
00140 tmat3x4<T> operator+ (
00141 tmat3x4<T> const & m1,
00142 tmat3x4<T> const & m2);
00143
00144 template <typename T>
00145 tmat3x4<T> operator- (
00146 tmat3x4<T> const & m,
00147 typename tmat3x4<T>::value_type const & s);
00148
00149 template <typename T>
00150 tmat3x4<T> operator- (
00151 tmat3x4<T> const & m1,
00152 tmat3x4<T> const & m2);
00153
00154 template <typename T>
00155 tmat3x4<T> operator* (
00156 tmat3x4<T> const & m,
00157 typename tmat3x4<T>::value_type const & s);
00158
00159 template <typename T>
00160 tmat3x4<T> operator* (
00161 typename tmat3x4<T>::value_type const & s,
00162 tmat3x4<T> const & m);
00163
00164 template <typename T>
00165 typename tmat3x4<T>::col_type operator* (
00166 tmat3x4<T> const & m,
00167 typename tmat3x4<T>::row_type const & v);
00168
00169 template <typename T>
00170 typename tmat3x4<T>::row_type operator* (
00171 typename tmat3x4<T>::col_type const & v,
00172 tmat3x4<T> const & m);
00173
00174 template <typename T>
00175 tmat4x4<T> operator* (
00176 tmat3x4<T> const & m1,
00177 tmat4x3<T> const & m2);
00178
00179 template <typename T>
00180 tmat3x4<T> operator/ (
00181 tmat3x4<T> const & m,
00182 typename tmat3x4<T>::value_type const & s);
00183
00184 template <typename T>
00185 tmat3x4<T> operator/ (
00186 typename tmat3x4<T>::value_type const & s,
00187 tmat3x4<T> const & m);
00188
00189
00190 template <typename T>
00191 tmat3x4<T> const operator- (
00192 tmat3x4<T> const & m);
00193
00194 template <typename T>
00195 tmat3x4<T> const operator-- (
00196 tmat3x4<T> const & m,
00197 int);
00198
00199 template <typename T>
00200 tmat3x4<T> const operator++ (
00201 tmat3x4<T> const & m,
00202 int);
00203
00204 }
00205
00206 namespace core{
00207 namespace type{
00208 namespace precision
00209 {
00213 typedef detail::tmat3x4<lowp_float> lowp_mat3x4;
00217 typedef detail::tmat3x4<mediump_float> mediump_mat3x4;
00221 typedef detail::tmat3x4<highp_float> highp_mat3x4;
00222
00223 }
00224 }
00225 }
00226 }
00227
00228 #ifndef GLM_EXTERNAL_TEMPLATE
00229 #include "type_mat3x4.inl"
00230 #endif
00231
00232 #endif //glm_core_type_mat3x4