00001
00002
00003
00004
00005 #include "jed_defs.h"
00006 #include "vector.h"
00007
00008 #ifndef GL_ENABLED
00009 typedef unsigned char GLubyte;
00010 typedef unsigned int GLuint;
00011 typedef unsigned long GLenum;
00012 typedef float GLfloat;
00013 typedef double GLdouble;
00014 #endif
00015
00016 #ifdef GL_ENABLED
00017
00018
00019 #if PLATAFORMA == i386_WIN32_VC
00020 #include <windows.h>
00021
00022
00023 #include <GL/gl.h>
00024 #include <GL/glu.h>
00025 #include <GL/glaux.h>
00026 #endif
00027
00028 #if PLATAFORMA != ANSI && PLATAFORMA != i386_WIN32_VC
00029 #include <GL/gl.h>
00030 #include <GL/glu.h>
00031 #include <GL/glx.h>
00032 #ifdef TK_ENABLED
00033 #include <gltk.h>
00034 #include <glaux.h>
00035 #endif
00036
00037
00038
00039 #endif
00040
00041 #if PLATAFORMA != ANSI
00042 #define GUARDAR_ESTADO_GL 1
00043 #define RESTAURAR_ESTADO_GL 2
00044 extern void maneje_estado_gl(int op);
00045 extern void pintar_plano_z(double z, double escala, int num_escalas,
00046 double r1, double g1, double b1, double r2, double g2, double b2);
00047 extern void pintar_localizante(GLdouble x, GLdouble y, GLdouble z,
00048 int estilo);
00049 extern void pintar_sistema_coordenadas(double camara_latitud,
00050 double camara_longitud,
00051 double camara_distancia,
00052 int estilo);
00053 #endif
00054
00055 #if PLATAFORMA == i386_WIN32_VC
00056 #define TK_RETURN AUX_RETURN
00057 #define TK_ESCAPE AUX_ESCAPE
00058 #define TK_SPACE AUX_SPACE
00059 #define TK_LEFT AUX_LEFT
00060 #define TK_UP AUX_UP
00061 #define TK_RIGHT AUX_RIGHT
00062 #define TK_DOWN AUX_DOWN
00063 #define TK_A AUX_A
00064 #define TK_B AUX_B
00065 #define TK_C AUX_C
00066 #define TK_D AUX_D
00067 #define TK_E AUX_E
00068 #define TK_F AUX_F
00069 #define TK_G AUX_G
00070 #define TK_H AUX_H
00071 #define TK_I AUX_I
00072 #define TK_J AUX_J
00073 #define TK_K AUX_K
00074 #define TK_L AUX_L
00075 #define TK_M AUX_M
00076 #define TK_N AUX_N
00077 #define TK_O AUX_O
00078 #define TK_P AUX_P
00079 #define TK_Q AUX_Q
00080 #define TK_R AUX_R
00081 #define TK_S AUX_S
00082 #define TK_T AUX_T
00083 #define TK_U AUX_U
00084 #define TK_V AUX_V
00085 #define TK_W AUX_W
00086 #define TK_X AUX_X
00087 #define TK_Y AUX_Y
00088 #define TK_Z AUX_Z
00089 #define TK_a AUX_a
00090 #define TK_b AUX_b
00091 #define TK_c AUX_c
00092 #define TK_d AUX_d
00093 #define TK_e AUX_e
00094 #define TK_f AUX_f
00095 #define TK_g AUX_g
00096 #define TK_h AUX_h
00097 #define TK_i AUX_i
00098 #define TK_j AUX_j
00099 #define TK_k AUX_k
00100 #define TK_l AUX_l
00101 #define TK_m AUX_m
00102 #define TK_n AUX_n
00103 #define TK_o AUX_o
00104 #define TK_p AUX_p
00105 #define TK_q AUX_q
00106 #define TK_r AUX_r
00107 #define TK_s AUX_s
00108 #define TK_t AUX_t
00109 #define TK_u AUX_u
00110 #define TK_v AUX_v
00111 #define TK_w AUX_w
00112 #define TK_x AUX_x
00113 #define TK_y AUX_y
00114 #define TK_z AUX_z
00115 #define TK_0 AUX_0
00116 #define TK_1 AUX_1
00117 #define TK_2 AUX_2
00118 #define TK_3 AUX_3
00119 #define TK_4 AUX_4
00120 #define TK_5 AUX_5
00121 #define TK_6 AUX_6
00122 #define TK_7 AUX_7
00123 #define TK_8 AUX_8
00124 #define TK_9 AUX_9
00125
00126 #define TK_LEFTBUTTON AUX_LEFTBUTTON
00127 #define TK_MIDDLEBUTTON AUX_MIDDLEBUTTON
00128 #define TK_RIGHTBUTTON AUX_RIGHTBUTTON
00129
00130 #define TK_DEPTH AUX_DEPTH
00131 #define TK_RGB AUX_RGB
00132 #define TK_INDEX AUX_INDEX
00133 #define TK_DOUBLE AUX_DOUBLE
00134 #define TK_SINGLE AUX_SINGLE
00135 #define TK_DIRECT AUX_DIRECT
00136 #define TK_INDIRECT AUX_INDIRECT
00137
00138 #define TK_SHIFT AUX_SHIFT
00139 #define TK_CONTROL AUX_CONTROL
00140
00141 #define tkQuit() auxQuit()
00142 #define tkSwapBuffers() auxSwapBuffers()
00143 #define tkInitWindow(nombre) auxInitWindow((nombre))
00144 #define tkInitDisplayMode(modo) auxInitDisplayMode((modo))
00145 #define tkInitPosition(x, y, x_tam, y_tam) \
00146 auxInitPosition((x), (y), (x_tam), (y_tam))
00147 #define tkExec() auxMainLoop((AUXMAINPROC)THE_draw_callback);
00148 #define tkExposeFunc(f) auxExposeFunc((AUXEXPOSEPROC)f);
00149 #define tkReshapeFunc(f) auxReshapeFunc((AUXRESHAPEPROC)f);
00150 #define tkSetGreyRamp() auxSetGreyRamp()
00151
00152 extern void tkDisplayFunc(void (*f)(void));
00153 extern void tkKeyDownFunc(GLenum (*tk_key_callback)(int,GLenum));
00154 extern void tkMouseUpFunc(GLenum (*locator_callback)(int, int, GLenum));
00155 extern void tkMouseDownFunc(GLenum (*locator_callback)(int, int, GLenum));
00156 extern void tkMouseMoveFunc(GLenum (*locator_callback)(int, int, GLenum));
00157 extern void tkIdleFunc(void (*idle_callback)(void));
00158 extern void (*THE_draw_callback)(void);
00159
00160 #endif
00161
00162 #endif // GL_ENABLED
00163
00164
00165
00166 #define DISTANCIA_VGL(v1, v2) \
00167 sqrt ( (((v1)->x - (v2)->x)*((v1)->x - (v2)->x)) + \
00168 (((v1)->y - (v2)->y)*((v1)->y - (v2)->y)) + \
00169 (((v1)->z - (v2)->z)*((v1)->z - (v2)->z)) )
00170
00171
00172
00173
00174 #ifndef __JED_GL__
00175 #define __JED_GL__
00176
00177 class VERTICE_GL {
00178 public:
00179 GLfloat u, v;
00180 GLfloat nx, ny, nz;
00181 GLfloat x, y, z;
00182 };
00183
00184 class TRIANGULO_GL {
00185 public:
00186 GLuint p0, p1, p2;
00187 };
00188
00189 #endif // __JED_GL__
00190
00191
00192
00193
00194
00195 #define PINTAR_MINMAX_GL() \
00196 { VECTOR min, max; \
00197 glColor3f(0, 1, 0); \
00198 glDisable(GL_LIGHTING); \
00199 glShadeModel(GL_FLAT); \
00200 glDisable(GL_TEXTURE_2D); \
00201 minmax(&min, &max); \
00202 pintar_paralelepipedo(min, max); }
00203
00204
00205 #ifdef GL_VERSION_1_1NONONO
00206 #define ACTIVAR_POLYGON_OFFSET() \
00207 if ( Calidad->con_bordes ) { \
00208 glEnable(GL_POLYGON_OFFSET_FILL); \
00209 glPolygonOffset(1, 1); \
00210 }
00211 #define DESACTIVAR_POLYGON_OFFSET() \
00212 if ( Calidad->con_bordes ) glDisable(GL_POLYGON_OFFSET_FILL);
00213 #endif
00214 #ifndef GL_VERSION_1_1NONONO
00215 #define ACTIVAR_POLYGON_OFFSET() ;
00216 #define DESACTIVAR_POLYGON_OFFSET() ;
00217 #endif
00218
00219
00220
00221
00222
00223 extern double COORDENADAS_cubo[6][4][3];
00224 extern double NORMALES_cubo[6][3];
00225 extern double TEXTURAS_cubo[6][4][2];
00226
00227
00228
00229
00230
00231 extern void pintar_cubo(double lado);
00232 extern void pintar_cubo_solido(double lado);
00233 extern void pintar_paralelepipedo(VECTOR p1, VECTOR p2);
00234 extern void
00235 PINTAR_VECTOR_GL(VECTOR p1, VECTOR p2, double grosor_cuerpo,
00236 double longitud_flecha, double grosor_flecha);
00237 extern void
00238 PINTAR_VECTOR_POVRAY(FILE *fd, VECTOR p1, VECTOR p2, double grosor_cuerpo,
00239 double longitud_flecha, double grosor_flecha);
00240
00241
00242
00243
00244
00245