main.h
上传用户:cxh8989
上传日期:2021-01-22
资源大小:2544k
文件大小:3k
源码类别:

射击游戏

开发平台:

Visual C++

  1. #ifndef _MAIN_H
  2. #define _MAIN_H
  3. #pragma warning(disable: 4786)
  4. #pragma warning(disable: 4244)
  5. #include <windows.h>
  6. #include <glgl.h>
  7. #include <glglu.h>
  8. #include <glglaux.h>
  9. #include <iostream>
  10. #include <fstream>
  11. #include <string>
  12. #include <vector>
  13. #include <mmsystem.h>
  14. #include "image.h"
  15. using namespace std;
  16. /** 窗口属性 */
  17. #define SCREEN_WIDTH  800
  18. #define SCREEN_HEIGHT 600
  19. #define SCREEN_DEPTH 16
  20. #define MAX_TEXTURES 1000  /**< 纹理的最大树木 */
  21. extern UINT g_Texture[MAX_TEXTURES]; /**< 纹理数组 */
  22. typedef void (APIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum target);
  23. typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
  24. /** 多重纹理 */
  25. extern PFNGLACTIVETEXTUREARBPROC glActiveTextureARB;
  26. extern PFNGLCLIENTACTIVETEXTUREARBPROC  glClientActiveTextureARB;
  27. #define GL_TEXTURE0_ARB                     0x84C0
  28. #define GL_TEXTURE1_ARB                     0x84C1
  29. /** 三维向量结构 */
  30. struct CVector3
  31. {
  32. public:
  33. CVector3() {}
  34. CVector3(float X, float Y, float Z) 
  35. x = X; y = Y; z = Z;
  36. }
  37. CVector3 operator+(CVector3 vVector)
  38. {
  39. return CVector3(vVector.x + x, vVector.y + y, vVector.z + z);
  40. }
  41. CVector3 operator-(CVector3 vVector)
  42. {
  43. return CVector3(x - vVector.x, y - vVector.y, z - vVector.z);
  44. }
  45. CVector3 operator*(float num)
  46. {
  47. return CVector3(x * num, y * num, z * num);
  48. }
  49. CVector3 operator/(float num)
  50. {
  51. return CVector3(x / num, y / num, z / num);
  52. }
  53. float x, y, z;
  54. };
  55. /** 2D点类结构 */
  56. class CVector2 
  57. {
  58. public:
  59. CVector2() {}
  60. CVector2(float X, float Y) 
  61. x = X; y = Y;
  62. }
  63. CVector2 operator+(CVector2 vVector)
  64. {
  65. return CVector2(vVector.x + x, vVector.y + y);
  66. }
  67. CVector2 operator-(CVector2 vVector)
  68. {
  69. return CVector2(x - vVector.x, y - vVector.y);
  70. }
  71. CVector2 operator*(float num)
  72. {
  73. return CVector2(x * num, y * num);
  74. }
  75. CVector2 operator/(float num)
  76. {
  77. return CVector2(x / num, y / num);
  78. }
  79. float x, y;
  80. };
  81. /** 全局变量 */
  82. extern bool  g_bFullScreen;
  83. extern HWND  g_hWnd;
  84. extern RECT  g_rRect;
  85. extern HDC   g_hDC;
  86. extern HGLRC g_hRC;
  87. extern HINSTANCE g_hInstance;
  88. extern double g_FrameInterval;
  89. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hprev, PSTR cmdline, int ishow);
  90. LRESULT CALLBACK WinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
  91. /** 主循环 */
  92. WPARAM MainLoop();
  93. bool CreateTexture(UINT &texture, LPSTR strFileName);
  94. void ChangeToFullScreen();
  95. HWND CreateMyWindow(LPSTR strWindowName, int width, int height, DWORD dwStyle, bool bFullScreen, HINSTANCE hInstance);
  96. bool bSetupPixelFormat(HDC hdc);
  97. void SizeOpenGLScreen(int width, int height);
  98. void InitializeOpenGL(int width, int height);
  99. void Init(HWND hWnd);
  100. void RenderScene();
  101. void DeInit();
  102. #endif