#ifndef OPEN_GL_H
#define OPEN_GL_H
// Linux Path to OpenGLES2
//#include <GLES2/gl2.h>
#ifdef USE_OPENGLES2
# include <OpenGLES/ES2/gl.h>
# include <OpenGLES/ES2/glext.h>
# include <GLKit/GLKMathTypes.h>
#else
# define GL_GLEXT_PROTOTYPES
# include <GL/gl.h>
# include <GL/glext.h>
# include <GLKMatrix.h>
# define glGenVertexArraysOES glGenVertexArrays
# define glBindVertexArrayOES glBindVertexArray
# define glDeleteVertexArraysOES glDeleteVertexArrays
#endif
//namespace Math
//{
// typedef GLKMatrix4 mat4;
// typedef GLKMatrix3 mat3;
//}
struct mat4 //: public GLKMatrix4
{
mat4& operator=(const GLKMatrix4& other)
{
for (int i = 0; i < 16; i++)
m[i] = other.m[i];
return *this;
}
mat4& operator=(const float* other)
{
for (int i = 0; i < 16; i++)
m[i] = other[i];
return *this;
}
union
{
struct
{
float m00, m01, m02, m03;
float m10, m11, m12, m13;
float m20, m21, m22, m23;
float m30, m31, m32, m33;
};
float m[16];
} __attribute__((aligned(16)));
};
struct mat3 // : public GLKMatrix3
{
mat3& operator=(const float* other)
{
for (int i = 0; i < 9; i++)
m[i] = other[i];
return *this;
}
union
{
struct
{
float m00, m01, m02;
float m10, m11, m12;
float m20, m21, m22;
};
float m[9];
};
};
#endif // OPEN_GL_H