天空是藍色的

          做好軟件為中國 #gcc -c helloworld.c -o helloworld.o //編譯目標文件 #gcc helloworld.o -o helloworld //編譯成可執行exe #helloworld //運行exe
          數據加載中……
          OpenGL

          main.cpp
          /**************************
           * Includes
           *
           **************************/

          #include <windows.h>
          #include <gl/gl.h>


          /**************************
           * Function Declarations
           *
           **************************/

          LRESULT CALLBACK WndProc (HWND hWnd, UINT message,
          WPARAM wParam, LPARAM lParam);
          void EnableOpenGL (HWND hWnd, HDC *hDC, HGLRC *hRC);
          void DisableOpenGL (HWND hWnd, HDC hDC, HGLRC hRC);


          /**************************
           * WinMain
           *
           **************************/

          int WINAPI WinMain (HINSTANCE hInstance,
                              HINSTANCE hPrevInstance,
                              LPSTR lpCmdLine,
                              int iCmdShow)
          {
              WNDCLASS wc;
              HWND hWnd;
              HDC hDC;
              HGLRC hRC;       
              MSG msg;
              BOOL bQuit = FALSE;
              float theta = 0.0f;

              /* register window class */
              wc.style = CS_OWNDC;
              wc.lpfnWndProc = WndProc;
              wc.cbClsExtra = 0;
              wc.cbWndExtra = 0;
              wc.hInstance = hInstance;
              wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);
              wc.hCursor = LoadCursor (NULL, IDC_ARROW);
              wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
              wc.lpszMenuName = NULL;
              wc.lpszClassName = "GLSample";
              RegisterClass (&wc);

              /* create main window */
              hWnd = CreateWindow (
                "GLSample", "OpenGL Sample",
                WS_CAPTION | WS_POPUPWINDOW | WS_VISIBLE,
                0, 0, 256, 256,
                NULL, NULL, hInstance, NULL);

              /* enable OpenGL for the window */
              EnableOpenGL (hWnd, &hDC, &hRC);

              /* program main loop */
              while (!bQuit)
              {
                  /* check for messages */
                  if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
                  {
                      /* handle or dispatch messages */
                      if (msg.message == WM_QUIT)
                      {
                          bQuit = TRUE;
                      }
                      else
                      {
                          TranslateMessage (&msg);
                          DispatchMessage (&msg);
                      }
                  }
                  else
                  {
                      /* OpenGL animation code goes here */

                      glClearColor (0.0f, 0.0f, 0.0f, 0.0f);
                      glClear (GL_COLOR_BUFFER_BIT);

                      glPushMatrix ();
                      glRotatef (theta, 0.0f, 0.0f, 1.0f);
                      glBegin (GL_TRIANGLES);
                      glColor3f (1.0f, 0.0f, 0.0f);   glVertex2f (0.0f, 1.0f);
                      glColor3f (0.0f, 1.0f, 0.0f);   glVertex2f (0.87f, -0.5f);
                      glColor3f (0.0f, 0.0f, 1.0f);   glVertex2f (-0.87f, -0.5f);
                      glEnd ();
                      glPopMatrix ();

                      SwapBuffers (hDC);

                      theta += 1.0f;
                      Sleep (1);
                  }
              }

              /* shutdown OpenGL */
              DisableOpenGL (hWnd, hDC, hRC);

              /* destroy the window explicitly */
              DestroyWindow (hWnd);

              return msg.wParam;
          }


          /********************
           * Window Procedure
           *
           ********************/

          LRESULT CALLBACK WndProc (HWND hWnd, UINT message,
                                    WPARAM wParam, LPARAM lParam)
          {

              switch (message)
              {
              case WM_CREATE:
                  return 0;
              case WM_CLOSE:
                  PostQuitMessage (0);
                  return 0;

              case WM_DESTROY:
                  return 0;

              case WM_KEYDOWN:
                  switch (wParam)
                  {
                  case VK_ESCAPE:
                      PostQuitMessage(0);
                      return 0;
                  }
                  return 0;

              default:
                  return DefWindowProc (hWnd, message, wParam, lParam);
              }
          }


          /*******************
           * Enable OpenGL
           *
           *******************/

          void EnableOpenGL (HWND hWnd, HDC *hDC, HGLRC *hRC)
          {
              PIXELFORMATDESCRIPTOR pfd;
              int iFormat;

              /* get the device context (DC) */
              *hDC = GetDC (hWnd);

              /* set the pixel format for the DC */
              ZeroMemory (&pfd, sizeof (pfd));
              pfd.nSize = sizeof (pfd);
              pfd.nVersion = 1;
              pfd.dwFlags = PFD_DRAW_TO_WINDOW |
                PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
              pfd.iPixelType = PFD_TYPE_RGBA;
              pfd.cColorBits = 24;
              pfd.cDepthBits = 16;
              pfd.iLayerType = PFD_MAIN_PLANE;
              iFormat = ChoosePixelFormat (*hDC, &pfd);
              SetPixelFormat (*hDC, iFormat, &pfd);

              /* create and enable the render context (RC) */
              *hRC = wglCreateContext( *hDC );
              wglMakeCurrent( *hDC, *hRC );

          }


          /******************
           * Disable OpenGL
           *
           ******************/

          void DisableOpenGL (HWND hWnd, HDC hDC, HGLRC hRC)
          {
              wglMakeCurrent (NULL, NULL);
              wglDeleteContext (hRC);
              ReleaseDC (hWnd, hDC);
          }

          posted on 2006-02-14 17:23 bluesky 閱讀(3309) 評論(5)  編輯  收藏 所屬分類: C/C++

          評論

          # re: OpenGL[未登錄] 2007-02-06 15:54 哈哈

          代碼怎么跟wx_DevCPP生成的一模一樣啊?
            回復  更多評論    

          # re: OpenGL 2008-01-28 21:14 吳楚

          玩游戲了。
            回復  更多評論    

          # re: OpenGL 2008-01-28 21:14 吳楚

          玩游戲了,就是玩了。
            回復  更多評論    

          # re: OpenGL 2008-01-28 21:16 吳楚

          安靜偉大那里棵刊物卡立刻大量扣帽子瓦斯矛盾安慰 瓦斯了,的, 啊奧妙達到;安慰安慰似的棵啊按時擴大;靈敏度啊似的棵;拉,啊;勞動我方面啊大拿帶按時那么啊啊挖;勞動媽媽的打發擴大立刻衛生帶們。生產擴大那時名稱啊按時按時 素淡立刻撒;勒克司。/安慰的迪斯科六仙桌考察拉啊 數據庫的啊啊
            回復  更多評論    

          # re: OpenGL 2008-05-28 17:41 NONAME

          垃圾.抄襲!
            回復  更多評論    
          主站蜘蛛池模板: 清苑县| 宝丰县| 宁阳县| 宿迁市| 丽水市| 鞍山市| 仙桃市| 修水县| 宜良县| 叶城县| 海原县| 额济纳旗| 韩城市| 麟游县| 长顺县| 郧西县| 宜都市| 南乐县| 诸暨市| 明星| 吴旗县| 湘阴县| 盖州市| 广汉市| 龙口市| 河西区| 堆龙德庆县| 温宿县| 利川市| 绿春县| 龙口市| 金堂县| 伊通| 霞浦县| 渝中区| 巴林右旗| 平谷区| 河曲县| 永康市| 齐河县| 怀化市|