NaskelClass.h
上传用户:sz83729876
上传日期:2013-03-07
资源大小:4140k
文件大小:4k
源码类别:

OpenGL

开发平台:

Windows_Unix

  1. #ifndef Naskel3D_H
  2. #define Naskel3D_H
  3. //#include "matrice.h"
  4. // Define
  5. #define NIMG_JPG 0
  6. #define NIMG_TGA 1
  7. #define WATER_SPEED 2
  8. #define NUM_SCENE 7
  9. #define TIMEPERSCENE 29.125
  10. #define MAX_CUBE 1600
  11. #define SQR(x) (x*x)
  12. class Naskel3D;
  13. typedef struct tagVERTEX // Build Our Vertex Structure
  14. {
  15. unsigned int color;
  16. float x, y, z; // 3D Coordinates
  17. float u, v; // Texture Coordinates
  18. } VERTEX;
  19. //Image structure
  20. typedef struct NIMG_TYP
  21. {
  22. unsigned char *vector;
  23. unsigned char *pixels;
  24. int width;
  25. int height;
  26. int components;
  27. DWORD* data; //Image data (up to 32 bits)
  28. GLuint  bpp; //Image color depth in bits per pixel
  29. GLuint  ID; //Texture ID used to select a texture
  30. long size; // future use..
  31. int TYPE;
  32. } NIMG, *NIMG_PTR;
  33. // Render Texture
  34. typedef struct NRT_TYP
  35. {
  36. UINT data[6]; // This will reference to our texture data stored with
  37. int size;
  38. int channels;
  39. int type;      
  40. int ID;
  41. } NRT;
  42. // Fog Structure
  43. typedef struct NFOG_TYP
  44. {
  45. GLfloat density; // How Dense Will The Fog Be
  46. GLfloat color[4]; // Set Fog Color
  47. GLfloat start; // Fog Start Depth
  48. GLfloat end; // Fog End Depth
  49. GLuint mode; // Storage For one of the Three Types Of Fog
  50. GLuint hint_mode; // Fog Hint Mode Value
  51. GLuint hint_target; // Fog Hint Target Value
  52. } NFOG;
  53. // Scene Structure
  54. typedef struct NSCENE_TYP
  55. {
  56. float SceneTime;
  57. int ThisScene;
  58. int FirstTimeScene;
  59. } NSCENE;
  60. typedef struct DOME_TYP
  61. {
  62. int NumVertices;
  63. int NumIndices;
  64. int NumPlaneVertices;
  65. float pRadius; 
  66. VERTEX *PlaneVertices;
  67. WORD *Indices;
  68. } DOME,*DOME_PTR;
  69. #define FONT_HEIGHT 32
  70. #define MAX_CHARS 256
  71. #define FONT_EXTRUDE 0.4f
  72. class Naskel3D {
  73. public:
  74. Naskel3D();
  75. ~Naskel3D();
  76. GLuint base;
  77. GLuint ListSceneCube[MAX_CUBE];
  78. UINT g_FontList3DID;
  79. UINT g_FontListSimpleID;
  80. UINT g_FontNaskel3DID;
  81. UINT CreateSimpleFont(LPSTR strFontName, int height, HWND m_hWnd);
  82. UINT CreateOpenGL3DFont(LPSTR strFontName, float extrude, HWND m_hWnd);
  83. UINT g_Texture[2];
  84. int TotalF;
  85. int speed; /* speed is in frame/second */
  86. int WaterMove,WaterWait;
  87. int WaterX, WaterY;
  88. int TotalCube;
  89. int Scene1Blend;
  90. int ExplodeRotate;
  91. int g_Viewport;
  92. float PosCube[MAX_CUBE][3];
  93. float AlphaTEST;
  94. float rot_x,rot_y,rot_z;
  95. float ALL_FRAME;
  96. float WaterCubeX,WaterCubeY,WaterCubeZ;
  97. float LaunchTime;
  98. float FGalaxieMove;
  99. float ExplodeSpeed;
  100. float g_RotateX, g_RotateY, g_RotateZ;
  101. DWORD tStart,tCur, tFps;
  102. DWORD tf, nf, showFps;
  103. bool WaterDone;
  104. bool BGalaxieMove1;
  105. bool BGalaxieMove2;
  106. bool TimeToExplode;
  107. bool BExplode;
  108. bool ImageLoad(NIMG_PTR image, char* filename,int type,GLfloat minfilter,GLfloat maxfilter);
  109. HWND n3dhWnd;
  110. int BuildTexture(char *szPathName, NIMG_PTR image,GLfloat minfilter,GLfloat maxfilter);
  111. GLvoid Enable_Fog();
  112. GLvoid Disable_Fog();
  113. GLvoid SIN_COS_Init(GLvoid);
  114. HFONT hOldFont;
  115. GLYPHMETRICSFLOAT g_GlyphInfo[MAX_CHARS];
  116. HDC g_hDC;
  117. NRT rendertex;
  118. // NFOG S5Fog;
  119. void glDraw3DText(const char *strString, ...);
  120. void glDrawText(int x, int y, const char *strString, ...);
  121. void DrawLogo();
  122. void Destroy3DFont();
  123. void PositionText( int x, int y );
  124. void InitScene(int part);
  125. void CreateCubeText(NIMG image, float x, float y, float z, float radius);
  126. void CubeEnv(NIMG image);
  127. void RenderScene(int part);
  128. void CreateRenderTexture(UINT textureArray[], int size, int channels, int type, int textureID);
  129. void NextScene(int scene);
  130. void DrawBackgrnd(NIMG image);
  131. void CreateCube(float x, float y, float z, float radius);
  132. void CreateMultiCube(float x, float y, float z, int list);
  133. void RotateMultiCube(int list,int rotate);
  134. void  ExplodeMultiCube(int list);
  135. void DrawAllScene();
  136. void InitAllScene();
  137. void SetMouse();
  138. void  LogoF0sT();
  139. void LogoNaskel();
  140. void InitSkyPlane(int divisions, float PlanetRadius, float AtmosphereRadius, float hTile, float vTile,DOME_PTR dome);
  141. void RenderSkyPlane(DOME dome);
  142. void ReleaseSkyPlane(DOME dome);
  143. void InitSkyDome(float radius, float dtheta, float dphi, float hTile, float vTile);
  144. void RenderSkyDome(float x, float y, float z);
  145. void Reset();
  146. };
  147. #endif