RADIO.H
上传用户:zbjingming
上传日期:2010-01-02
资源大小:2436k
文件大小:4k
源码类别:

OpenGL

开发平台:

Visual C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <windows.h>
  5. #include <GL/gl.h>
  6. #include <GL/glu.h>
  7. #include <GL/glaux.h>
  8. /* Head file for display model */
  9. #define CHARS signed  char /* 1 byte signed char */
  10. #define CHARU unsigned char /* 1 byte unsigned char */
  11. #define INT2S signed   short /* 2 byte signed int */
  12. #define INT2U unsigned short /* 2 byte unsigned int */
  13. #define INT4S signed   long /* 4 byte signed int */
  14. #define INT4U unsigned long /* 4 byte unsigned int */
  15. #define INT8U unsigned long long /* 8 byte unsigned int */
  16. #define FLOAT float /* 4 byte  */
  17. /* for material type */
  18. #define DIFFUSE 1
  19. #define SPECULAR 2
  20. #define TRANSPARENT 4
  21. #define ENERGY 8
  22. #define SAMEKD 16
  23. #define SAMEKS 32
  24. #define SAMEKT 64
  25. /* for image type */
  26. #define NOIMAGE 0
  27. #define COLOR2 1
  28. #define COLOR16 4
  29. #define COLOR256 8
  30. #define HIGHCOLOR 16
  31. #define TRUECOLOR 24
  32. #define ALPHACOLOR 32
  33. /* Patch type */
  34. #define cTRIANGLE 't'
  35. #define cQUADRIC 'q'
  36. /* Texture mapping type */
  37. #define CLAMP_TEXTURE 0
  38. #define REPEAT_TEXTURE 1
  39. /* Data struct */
  40. typedef struct texture_2d
  41. {
  42.     char fname[30];
  43.     INT2U type; /* CLAMP_TEXTURE or REPEAT_TEXTEXTURE */
  44. }   TEXTURE_2D;
  45. typedef struct FILEHEAD
  46. {
  47. char bftype[2];
  48. long bfsize;
  49.     long reserved;
  50.     long address;
  51. long size;
  52. long width;
  53. long height;
  54. int plane;
  55. int bitcount;
  56. long compress;
  57. long sizeImage;
  58. long Xpelspermeter;
  59. long Ypelspermeter;
  60. long IrUsed;
  61. long CRrImportant;
  62. }   bmphead;
  63. typedef struct point     /* point in 3D  */
  64. {
  65.     FLOAT x, y, z; /* 3D coordinate */
  66.     FLOAT r, g, b; /* color  */
  67.     FLOAT u, v; /* texture coordinate */
  68. }   POINT3D;
  69. typedef struct surface /* surface */
  70. {
  71.     INT4U pointn; /* point number */
  72.     INT4U triangle; /* triangle number */
  73.     INT4U quadric; /* quadrangle number */
  74.     POINT3D *pointlist; /* points list */
  75.     INT4U *patchlist; /* patches list(list of point No.)*/
  76.     INT4U texId;         /* texture index */
  77. }   SURFACE;
  78. typedef struct object /* OBJECT */
  79. {
  80.     INT4U SurfNum; /* surface number and list size*/
  81.     SURFACE *surflist;  /* surfaces list in the object*/
  82. }   OBJECT;
  83. /************************************************************************/
  84. #define INTS int
  85. #define REAL float
  86. #define Error     0
  87. #define NoError   1
  88. #define FALSE     0
  89. #define TRUE      1
  90. #define MINREAL   1.0e-5
  91. #define MAXREAL   1.0e10
  92. #define MAXINTS   (0x7f<<24)
  93. #define zero(x)   fabs(x) < MINREAL
  94. #define upint(x)  (INTS)(x+1-MINREAL)
  95. #define addr(i,j) (long)(j)*cam.width+i
  96. #define MIN(x,y)  ((x)<(y)?(x):(y))
  97. #define LEFT_EG  0x01
  98. #define RIGHT_EG 0x02
  99. #define HORIZ    0x04
  100. #define DCV      0x08
  101. #define UCV      0x10
  102. #define MAX_TEX  20
  103. /************************************************************************/
  104. extern unsigned char *OpenTexImage( INT2U TexIndex, INT2U *rslx, INT2U *rsly );
  105. extern void freelist();
  106. extern void    InitRenderWin();
  107. extern void    Render(void);
  108. extern void write_rgb(char *filename);
  109. extern void    CALLBACK myReshape(int w, int h);
  110. extern void    Hemi_mode();
  111. extern void CalcTexKd( int TexIndex, float *Kdr, float *Kdg, float *Kdb );
  112. extern void InitTex( int TexIndex );
  113. extern void CloseTex();
  114. extern  void    ReadData();
  115. extern  void    CALLBACK Shoot(void) ;
  116. void    LoadAllTexture();
  117. void    FreeAllTexture();
  118. void    freelist();
  119. void    InitLookAt();
  120. unsigned char  *ImageDatas[MAX_TEX];
  121. INT2U rslxs[MAX_TEX], rslys[MAX_TEX];
  122. int   texnum;