Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef TANGO_GL_GL_UTIL_H_
00018 #define TANGO_GL_GL_UTIL_H_
00019 #define GLM_FORCE_RADIANS
00020
00021 #define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642
00022
00023 #include <stdlib.h>
00024 #include <jni.h>
00025 #include <android/log.h>
00026 #include <GLES2/gl2.h>
00027 #include <GLES2/gl2ext.h>
00028 #include <tango_support_api.h>
00029
00030 #include "glm/glm.hpp"
00031 #include "glm/gtc/matrix_transform.hpp"
00032 #include "glm/gtc/quaternion.hpp"
00033 #include "glm/gtc/type_ptr.hpp"
00034 #include "glm/gtx/matrix_decompose.hpp"
00035
00036 #define LOG_TAG "rtabmap"
00037 #ifdef DISABLE_LOG
00038 #define LOGD(...) ;
00039 #define LOGI(...) ;
00040 #define LOGW(...) ;
00041 #else
00042 #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
00043 #define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
00044 #define LOGW(...) __android_log_print(ANDROID_LOG_WARN,LOG_TAG,__VA_ARGS__)
00045 #endif
00046 #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
00047
00048 #ifndef M_PI
00049 #define M_PI 3.1415926f
00050 #endif
00051
00052 #define RADIAN_2_DEGREE 57.2957795f
00053 #define DEGREE_2_RADIANS 0.0174532925f
00054
00055 namespace tango_gl {
00056 namespace util {
00057 void CheckGlError(const char* operation);
00058
00059 GLuint CreateProgram(const char* vertex_source,
00060 const char* fragment_source);
00061
00062 void DecomposeMatrix(const glm::mat4& transform_mat,
00063 glm::vec3& translation,
00064 glm::quat& rotation,
00065 glm::vec3& scale);
00066
00067
00068
00069 glm::vec3 GetColumnFromMatrix(const glm::mat4& mat, const int col);
00070
00071
00072 glm::vec3 GetTranslationFromMatrix(const glm::mat4& mat);
00073
00074 float Clamp(float value, float min, float max);
00075 void PrintMatrix(const glm::mat4& matrix);
00076 void PrintVector(const glm::vec3& vector);
00077 void PrintQuaternion(const glm::quat& quat);
00078
00079 glm::vec3 LerpVector(const glm::vec3& x, const glm::vec3& y, float a);
00080 float DistanceSquared(const glm::vec3& v1, const glm::vec3& v2);
00081
00082 bool SegmentAABBIntersect(const glm::vec3& aabb_min, const glm::vec3& aabb_max,
00083 const glm::vec3& start, const glm::vec3& end);
00084
00085 glm::vec3 ApplyTransform(const glm::mat4& mat, const glm::vec3& vec);
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098 TangoSupportRotation GetAndroidRotationFromColorCameraToDisplay(
00099 int display_rotation, int color_camera_rotation);
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110 TangoSupportRotation GetAndroidRotationFromColorCameraToDisplay(
00111 TangoSupportRotation display_rotation, int color_camera_rotation);
00112
00113 }
00114 }
00115 #endif // TANGO_GL_RENDERER_GL_UTIL