Página principal | Jerarquía de la clase | Lista alfabética | Lista de componentes | Lista de archivos | Miembros de las clases | Archivos de los miembros | Páginas relacionadas

jed_gl.h

Ir a la documentación de este archivo.
00001 //===========================================================================
00002 //= Definiciones para la portabilidad de OpenGL.                            =
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 /* Librerias de OpenGL */
00019 #if PLATAFORMA == i386_WIN32_VC
00020     #include <windows.h>
00021     /* OJO: Esto lo hace incompatible con el list.h de GNU.  Para mantener
00022     coherencia, llame siempre a jedi_gl.h DESPUES de llamar a list.h */
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 //  #ifdef GLUT_ENABLED      // Por alguna extranna razon aqui molesta...
00037 //    #include <GL/glut.h>   // Es mejor llamarlo de donde se requiera
00038 //  #endif
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 //- DEFINICIONES UTILES PARA EL USO DE ARREGLOS DE VERTICES CON OPENGL ------
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 /* OJO: Es importante no cambiar el orden de los atributos en estas clases,
00172 porque son procesadas en ese orden por algoritmos de OpenGL */
00173 
00174 #ifndef __JED_GL__
00175 #define __JED_GL__
00176 
00177 class VERTICE_GL {       // Usado para crear arreglos de vertices OpenGL
00178   public:
00179     GLfloat u, v;        // Coordenadas en el espacio de la textura
00180     GLfloat nx, ny, nz;  // Vector normal para este vertice
00181     GLfloat x, y, z;     // Coordenadas en el espacio del modelo 3D
00182 };
00183 
00184 class TRIANGULO_GL {
00185   public:
00186     GLuint p0, p1, p2;   // Indices en un arreglo de VERTICE_GL's
00187 };
00188 
00189 #endif // __JED_GL__
00190 
00191 //===========================================================================
00192 //= Macros publicas/globales                                                =
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 // OJO: Temporalmente desactivado porque molesta con la Voodoo 3dfx
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 //= Variables globales                                                      =
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 //= Prototipos de funciones                                                 =
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 //= EOF                                                                     =
00244 //===========================================================================
00245 

Este archivo HTML ha sido generado automáticamente a partir del código fuente AQUYNZA. NO LO EDITE. Para mayor información contacte al autor.