00001
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef glutil_h__
00036 #define glutil_h__
00037
00038 #include <vector>
00039 #include "vec3.h"
00040 #include "transform.h"
00041
00042 #ifdef __APPLE__
00043 #include "OpenGL/gl.h"
00044 #else // WIN32, LINUX
00045 #include "GL/gl.h"
00046 #endif //__APPLE__
00047
00048 using std::vector;
00049
00050 namespace EMAN
00051 {
00052 class EMData;
00053 class MarchingCubes;
00054
00055 class GLUtil {
00056 public:
00060 static unsigned int gen_glu_mipmaps(const EMData* const emdata);
00061
00067 static unsigned int gen_gl_texture(const EMData* const emdata, GLenum format = GL_LUMINANCE);
00068
00072 static unsigned int render_amp8_gl_texture(EMData* emdata, int x0, int y0, int ixsize, int iysize, int bpl, float scale, int mingray, int maxgray, float render_min, float render_max,float gamma,int flags);
00073
00077 static int nearest_projected_points(const vector<float>& model_matrix, const vector<float>& proj_matrix, const vector<int>& view_matrix, const vector<Vec3f>& points, const float mouse_x, const float mouse_y,const float& nearnes);
00078 static void colored_rectangle(const vector<float>& data,const float& alpha, const bool center_point=false);
00079 static void mx_bbox(const vector<float>& data, const vector<float>& text_color, const vector<float>& bg_color);
00080
00099 static std::string render_amp8(EMData * emdata, int x, int y, int xsize, int ysize,
00100 int bpl, float scale, int min_gray, int max_gray,
00101 float min_render, float max_render,float gamma,int flags);
00102
00109 static unsigned long get_isosurface_dl(MarchingCubes* mc, unsigned int tex_id = 0, bool surface_face_z = false, bool recontour = true);
00110
00112 static void render_using_VBOs(MarchingCubes* mc, unsigned int tex_id = 0, bool surface_face_z = false);
00113
00115 static void contour_isosurface(MarchingCubes* mc);
00116
00121 static void glLoadMatrix(const Transform& xform);
00122
00127 static void glMultMatrix(const Transform& xform);
00128
00130 static void glDrawBoundingBox(float width, float height, float depth);
00131
00132 static void glDrawDisk(float radius, int spokes);
00133
00134 private:
00135
00136 static GLuint buffer[2];
00137
00138 };
00139 }
00140
00141 #endif //glutil_h__