Browse Source

Added Matrix3 specialization (will be needed for normals, lighting etc.).

vectorfields
Vladimír Vondruš 16 years ago
parent
commit
e597ad489f
  1. 5
      src/AbstractShaderProgram.h
  2. 9
      src/Magnum.h
  3. 41
      src/Math/Matrix3.h

5
src/AbstractShaderProgram.h

@ -164,6 +164,11 @@ class AbstractShaderProgram {
glUniform4fv(location, 1, value.data());
}
/** @copydoc setUniform(GLint, GLint) */
void setUniform(GLint location, const Matrix3& value) {
glUniformMatrix3fv(location, 1, GL_FALSE, value.data());
}
/** @copydoc setUniform(GLint, GLint) */
void setUniform(GLint location, const Matrix4& value) {
glUniformMatrix4fv(location, 1, GL_FALSE, value.data());

9
src/Magnum.h

@ -21,13 +21,22 @@
#include <GL/glew.h>
#include "Math/Matrix3.h"
#include "Math/Matrix4.h"
#include "Math/Vector4.h"
namespace Magnum {
/** @brief Three-component floating-point vector */
typedef Math::Vector3<GLfloat> Vector3;
/** @brief Four-component floating-point vector */
typedef Math::Vector4<GLfloat> Vector4;
/** @brief 3x3 floating-point matrix */
typedef Math::Matrix3<GLfloat> Matrix3;
/** @brief 4x4 floating-point matrix */
typedef Math::Matrix4<GLfloat> Matrix4;
/**

41
src/Math/Matrix3.h

@ -0,0 +1,41 @@
#ifndef Magnum_Math_Matrix3_h
#define Magnum_Math_Matrix3_h
/*
Copyright © 2010 Vladimír Vondruš <mosra@centrum.cz>
This file is part of Magnum.
Magnum is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License version 3
only, as published by the Free Software Foundation.
Magnum is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License version 3 for more details.
*/
/** @file
* @brief Class Magnum::Math::Matrix3
*/
#include "Matrix.h"
namespace Magnum { namespace Math {
/** @brief Matrix 3x3 */
template<class T> class Matrix3: public Matrix<T, 3> {
public:
/** @copydoc Matrix::Matrix(bool) */
inline Matrix3(bool identity = true): Matrix<T, 3>(identity) {}
/** @copydoc Matrix::Matrix(const T*) */
inline Matrix3(const T* data): Matrix<T, 3>(data) {}
/** @copydoc Matrix::Matrix(const Matrix<T, size>&) */
inline Matrix3(const Matrix<T, 3>& other): Matrix<T, 3>(other) {}
};
}}
#endif
Loading…
Cancel
Save