#include#include HGLRC hRC = NULL;HDC hDC = NULL;HWND hWnd = NULL;HINSTANCE hInstance = NULL;BOOL keys[256];BOOL active = TRUE;BOOL fullscreen = FALSE;BOOL twinkle = FALSE; // 星星是否闪烁BOOL tp = FALSE; // t 键是否按下const int num = 50; // 星星的数目// 星星的结构typedef struct{ int r, g, b; GLfloat dist; GLfloat angle;}stars;// 定义50个星星stars star[num]; GLfloat zoom = -15.0f; // 星星离观察者的距离GLfloat title = 90.0f; // 星星的倾角GLfloat spin; // 闪烁星星的自转GLuint loop; // 循环变量GLuint texture[1]; // 存一个纹理LRESULT CALLBACK WindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);AUX_RGBImageRec* LoadBMP(char* FileName){ FILE *File = NULL; if (!FileName){ MessageBox(NULL, "文件未存在", "错误", MB_OK|MB_ICONEXCLAMATION); return NULL; } File = fopen(FileName, "r"); if (!File){ MessageBox(NULL, "文件未能正常打开", "错误", MB_OK|MB_ICONEXCLAMATION); return NULL; } fclose(File); return auxDIBImageLoad(FileName);}BOOL LoadGLTexture(char* Filename, GLuint* texture){ BOOL Status = FALSE; AUX_RGBImageRec *TextureImage[1]; memset(TextureImage, 0, sizeof(void*)*1); if (TextureImage[0] = LoadBMP(Filename)){ Status = TRUE; // 创建一个纹理 glGenTextures(1, texture); glBindTexture(GL_TEXTURE_2D, *texture); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data); } if (TextureImage[0]){ if (TextureImage[0]->data) free(TextureImage[0]->data); free(TextureImage[0]); } return Status;}GLvoid ReSizeGLScene(GLsizei width, GLsizei height){ // 如果高为0 , 则设置其为1 if (height == 0) height = 1; // 设置可以看到的视角 glViewport(0,0,width, height); // 设置投影矩阵 glMatrixMode(GL_PROJECTION); glLoadIdentity(); // 设置平截头体 gluPerspective(45.0f, (GLdouble)width/(GLdouble)height, 0.1f, 100.0f); // 设置模型矩阵 glMatrixMode(GL_MODELVIEW); glLoadIdentity();}GLvoid InitGL(){ if (!LoadGLTexture("Data/Star.bmp", &texture[0])){ MessageBox(NULL, "载入纹理失败", "错误", MB_OK|MB_ICONEXCLAMATION); exit(1); } glEnable(GL_TEXTURE_2D); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glShadeModel(GL_SMOOTH); //glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // 设置颜色混合 glBlendFunc(GL_SRC_ALPHA, GL_ONE); glEnable(GL_BLEND); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); // 星星属性设置 for (loop=1; loop