青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

蕙麓

Email:oxionghui@gmail.com

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
OpenGL.h,OpenGL.cpp主要是圖形處理相關(guān)的操作。main.cpp主程序


 
OpenGL.h: interface for the OpenGL class.
 2 //
 3 //////////////////////////////////////////////////////////////////////
 4 
 5 #if !defined(AFX_OPENGL_H__7078166F_1240_4FB7_8CD9_A3E45C609EF5__INCLUDED_)
 6 #define AFX_OPENGL_H__7078166F_1240_4FB7_8CD9_A3E45C609EF5__INCLUDED_
 7 
 8 #if _MSC_VER > 1000
 9 #pragma once
10 #endif // _MSC_VER > 1000
11 
12 #include <windows.h>
13 #include <gl/gl.h>
14 #include <gl/glu.h>
15 
16 class OpenGL  
17 {
18 private:
19     HDC        hDC;            // 
20     HGLRC    hRC;            // 
21 public:
22     OpenGL();
23     virtual ~OpenGL();
24     BOOL    SetupPixelFormat(HDC hDC);   
25     void    ReSizeGLScene(int Width, int Height);  //初始化視口
26     void    Render();      //渲染
27     void    CleanUp();
28 
29 };
30 
31 #endif // !defined(AFX_OPENGL_H__7078166F_1240_4FB7_8CD9_A3E45C609EF5__INCLUDED_)
32 

OpenGL.cpp   
 1 // OpenGL.cpp: implementation of the OpenGL class.
 2 //
 3 //////////////////////////////////////////////////////////////////////
 4 #include "OpenGL.h"
 5 
 6 //////////////////////////////////////////////////////////////////////
 7 // Construction/Destruction
 8 //////////////////////////////////////////////////////////////////////
 9 
10 OpenGL::OpenGL()
11 {
12 
13 }
14 
15 OpenGL::~OpenGL()
16 {    
17     CleanUp();
18 }
19 
20 BOOL OpenGL::SetupPixelFormat(HDC hDC0)  //設(shè)置像素格式
21 {    
22     int nPixelFormat;                                // 象素點(diǎn)格式
23     hDC = hDC0;
24     PIXELFORMATDESCRIPTOR pfd = { 
25         sizeof(PIXELFORMATDESCRIPTOR),    // pfd結(jié)構(gòu)的大小 
26             1,                                          // 版本號(hào) 
27             PFD_DRAW_TO_WINDOW |         // 支持在窗口中繪圖 
28             PFD_SUPPORT_OPENGL |           // 支持 OpenGL 
29             PFD_DOUBLEBUFFER,                // 支持雙緩存模式 
30             PFD_TYPE_RGBA,                    // RGBA 顏色模式 
31             24,                                      // 24 位顏色深度 
32             000000,                     // 忽略顏色位 
33             0,                                        
34             0,                                        
35             0,                                     
36             0000,                           
37             16,                                   // 深度緩存     
38             0,                                      
39             0,                                     
40             PFD_MAIN_PLANE,            
41             0,                                   
42             000                            
43     }; 
44     if (!(nPixelFormat = ChoosePixelFormat(hDC, &pfd))) 
45     {
46         MessageBox(NULL,"沒找到合適的顯示模式","Error",MB_OK|MB_ICONEXCLAMATION);
47         return FALSE;
48     }
49     SetPixelFormat(hDC,nPixelFormat,&pfd);//設(shè)置當(dāng)前設(shè)備的像素點(diǎn)格式
50     hRC = wglCreateContext(hDC);           //獲取渲染描述句柄
51     wglMakeCurrent(hDC, hRC);               //激活渲染描述句柄
52     
53     return TRUE;
54 }
55 
56 void OpenGL::ReSizeGLScene(int Width, int Height)
57 {    
58     glViewport(0,0,Width,Height);      //重置當(dāng)前的視口            
59     glMatrixMode(GL_PROJECTION);   //選擇投影矩陣            
60     glLoadIdentity();                      //重置投影矩陣        
61     gluPerspective                         //設(shè)置視口的大小                        
62         ( 54.0f,                             
63         (GLfloat)Width/(GLfloat)Height,    
64         0.1f,                                
65         3000.0f                        
66         );
67     
68     glMatrixMode(GL_MODELVIEW);       //選擇模型觀察矩陣            
69     glLoadIdentity();                         //重置模型觀察矩陣
70     
71 }
72 
73 void OpenGL::Render()                                   //OpenGL圖形渲染
74 {    
75     glClearColor(0.0f0.0f0.3f1.0f);              // 設(shè)置刷新背景色
76     glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); // 刷新背景
77     glLoadIdentity();                                    // 重置模型觀察矩陣
78     
79     //畫矩形
80     glBegin(GL_QUADS);
81     glVertex3f(-1.0f,-1.0f,-5.0f);
82     glVertex3f(1.0f,-1.0f,-5.0f);
83     glVertex3f(1.0f,1.0f,-5.0f);
84     glVertex3f(-1.0f,1.0f,-5.0f);
85     glEnd();
86 
87     SwapBuffers(hDC);                                 // 切換緩沖區(qū)
88 }
89 void OpenGL::CleanUp()
90 {    
91     wglMakeCurrent(hDC, NULL);                       //清除OpenGL
92     wglDeleteContext(hRC);                            //清除OpenGL
93 }
94 

main.cpp
  1 #include "OpenGL.h"
  2 
  3 OpenGL* m_OpenGL;
  4 HDC        hDC;         //窗口的設(shè)備環(huán)境句柄 
  5 HWND    hWnd = NULL; //窗口句柄 
  6 int        Width = 800// 窗口寬
  7 int        Height = 600;// 窗口高
  8 int        bits  = 24;     // 顏色深度
  9 
 10 void GameLoop()
 11 {   
 12     MSG msg;    //消息結(jié)構(gòu)
 13     BOOL fMessage;
 14     PeekMessage(&msg, NULL, 0U0U, PM_REMOVE);
 15     while(msg.message != WM_QUIT)    // 
 16     {   
 17         fMessage = PeekMessage(&msg, NULL, 0U0U, PM_REMOVE);
 18         if(fMessage)                      //
 19         { 
 20             TranslateMessage(&msg);
 21             DispatchMessage(&msg);
 22         }
 23         else  
 24             m_OpenGL->Render();    //無消息
 25     }
 26 }
 27 
 28 LRESULT WINAPI MsgProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam )// 消息響應(yīng)處理
 29 {    
 30     switch(message)
 31     {
 32     case WM_CREATE:                        // 建立窗口
 33         hDC = GetDC(hWnd);                // 獲取當(dāng)前窗口的設(shè)備句柄
 34         m_OpenGL->SetupPixelFormat(hDC);// 調(diào)用顯示模式安裝功能
 35         break;
 36 
 37     case WM_CLOSE:                        // 關(guān)閉窗口
 38         m_OpenGL->CleanUp();            // 結(jié)束處理
 39         PostQuitMessage(0);
 40         break;
 41 
 42     case WM_SIZE:                         // 窗口尺寸變化
 43         Height = HIWORD(lParam);      // 窗口的高
 44         Width  = LOWORD(lParam);     // 窗口的寬
 45         if (Height == 0)                   // 防止被零除
 46             Height = 1;                   
 47         m_OpenGL->ReSizeGLScene(Width,Height);  //重置窗口
 48         break;
 49 
 50     case WM_DESTROY:                    // 退出消息
 51         PostQuitMessage(0);
 52         break;
 53         
 54     case WM_KEYUP:                        // 按ESC退出
 55         switch (wParam)
 56         {
 57         case VK_ESCAPE:
 58             m_OpenGL->CleanUp();    // 結(jié)束處理
 59             PostQuitMessage(0);
 60         
 61             break;
 62         } 
 63         default:        
 64             break;
 65     }
 66     return (DefWindowProc(hWnd, message, wParam, lParam));
 67 }
 68 
 69 INT WINAPI WinMain(HINSTANCE hInst,HINSTANCE,LPSTR,INT )// WinMain程序入口
 70 {
 71     // 注冊窗口類
 72     bool fullScreen = TRUE;      //全屏標(biāo)志,默認(rèn)全屏
 73     DWORD    dwExStyle;        // Window 擴(kuò)展風(fēng)格
 74     DWORD    dwStyle;           // Window 窗口風(fēng)格
 75     RECT    windowRect;        // 窗口尺寸
 76     int        nX = 0,nY = 0;
 77     if (MessageBox(NULL,"使用全屏模式嗎?""選擇顯示模式",
 78         MB_YESNO|MB_ICONQUESTION|MB_SYSTEMMODAL) == IDNO)//選擇窗口模式
 79     {
 80         fullScreen = false;
 81     }                                    
 82     if (fullScreen)                                  // 選擇全屏模式
 83     {
 84         DEVMODE dmScreenSettings;         // 設(shè)備模式
 85         memset(&dmScreenSettings,0,sizeof(dmScreenSettings));    // 確保內(nèi)存分配
 86         dmScreenSettings.dmSize = sizeof(dmScreenSettings);        // Devmode 結(jié)構(gòu)的大小
 87         dmScreenSettings.dmPelsWidth = Width;          // 屏幕寬
 88         dmScreenSettings.dmPelsHeight = Height;        // 屏幕高
 89         dmScreenSettings.dmBitsPerPel = 16;             // 色彩深度
 90         dmScreenSettings.dmDisplayFrequency = 75;   // 
 91         dmScreenSettings.dmFields = DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT|DM_DISPLAYFREQUENCY;
 92         if (ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
 93         {
 94             fullScreen = FALSE;
 95         }
 96         dwExStyle = WS_EX_APPWINDOW; // Window 擴(kuò)展風(fēng)格
 97         dwStyle = WS_POPUP;                // Window 窗口風(fēng)格
 98         ShowCursor(FALSE);                   // 隱藏鼠標(biāo)
 99     }
100     else
101     {
102         dwExStyle = WS_EX_APPWINDOW|WS_EX_WINDOWEDGE;    // 使窗口具有3D外觀
103         dwStyle = WS_OVERLAPPEDWINDOW;                // 使用標(biāo)準(zhǔn)窗口    
105         int wid = GetSystemMetrics(SM_CXSCREEN);        // 獲取當(dāng)前屏幕寬
106         int hei = GetSystemMetrics(SM_CYSCREEN);        // 獲取當(dāng)前屏幕高
107         nX = (wid-Width)/2;nY = (hei-Height)/2;            // 計(jì)算窗口居中用
108     }
109     //-------------------------------------------------------------------
110     AdjustWindowRectEx(&windowRect,dwStyle,FALSE,dwExStyle);//調(diào)整窗口尺寸
111     
112     char className[] = "TApplicationGL";
113     
114     //窗口類型結(jié)構(gòu)
115     WNDCLASSEX wc = { sizeof(WNDCLASSEX),
116         CS_HREDRAW | CS_VREDRAW | CS_OWNDC,//
117         MsgProc, 
118         0L
119         0L
120         GetModuleHandle(NULL),
121         NULL, 
122         NULL, 
123         NULL, 
124         NULL,
125         className,
126         NULL };   
127     
128     RegisterClassEx( &wc ); //注冊該窗口類型
129 
130     m_OpenGL = new OpenGL();//
131     hWnd = CreateWindowEx(NULL,
132                           className,
133                           "OpenGL",
134                           dwStyle|WS_CLIPCHILDREN|WS_CLIPSIBLINGS,
135                           nX,
136                           nY,
137                           Width, 
138                           Height,
139                           NULL,
140                           NULL,
141                           hInst,
142                           NULL);   
143     ShowWindow(hWnd, SW_SHOW);  // 顯示窗口
144     UpdateWindow(hWnd);               // 刷新窗口
145     GameLoop();                            // 進(jìn)入消息循環(huán)
146     return 0
147 }

注:OpenGL類處理圖形相關(guān)的操作,main.cpp管理主窗口,處理消息

結(jié)果如下:
posted on 2012-05-22 11:54 蕙麓 閱讀(657) 評(píng)論(2)  編輯 收藏 引用 所屬分類: 計(jì)算機(jī)圖像學(xué)(OpenGL)

評(píng)論

# re: OpenGL程序框架 2012-06-10 13:08 eryar
可以使用OpenSceneGraph,
比直接用OpenGL要方便點(diǎn)...  回復(fù)  更多評(píng)論
  

# re: OpenGL程序框架 2012-06-17 17:14 蕙麓
嗯,我可以試試看。Thank you @eryar
  回復(fù)  更多評(píng)論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            美女脱光内衣内裤视频久久影院| 亚洲人成在线观看| 99re视频这里只有精品| 亚洲人成7777| 亚洲毛片网站| 国产伦精品一区二区三| 久久久久久亚洲精品杨幂换脸 | 亚洲尤物在线视频观看| 99视频精品全国免费| 国产精品一级久久久| 久久久国产午夜精品| 欧美成人一区二区在线| 亚洲一区国产一区| 久久国产手机看片| 亚洲精品一区二区在线| 一区二区三区波多野结衣在线观看| 国产欧美日韩综合一区在线观看| 久久麻豆一区二区| 欧美日韩精品一区二区| 久久久久久久一区| 欧美另类视频| 久久久国际精品| 欧美精品aa| 久久伊人免费视频| 欧美偷拍另类| 欧美激情视频免费观看| 国产精品久久久久永久免费观看| 免费成人网www| 国产精品毛片a∨一区二区三区| 免费欧美在线| 国产欧美日韩综合精品二区| 亚洲激情成人在线| 国产女人18毛片水18精品| 欧美激情性爽国产精品17p| 国产伦精品一区二区三区免费 | 亚洲成人资源| 国产主播一区二区| 亚洲天堂第二页| 亚洲欧洲视频| 久久久精品午夜少妇| 欧美一区二区三区免费在线看| 欧美精品成人91久久久久久久| 麻豆精品在线播放| 国产日韩欧美综合| 亚洲一区二区三区午夜| 国产精品99久久久久久www| 久久综合国产精品台湾中文娱乐网| 亚洲欧美久久久| 欧美日韩国产综合一区二区| 亚洲国产黄色| 亚洲大片在线观看| 久久综合国产精品| 免费观看亚洲视频大全| 国内精品久久久| 小黄鸭精品aⅴ导航网站入口| 香蕉久久精品日日躁夜夜躁| 国产精品国产三级国产| 99精品欧美一区二区三区| 99re热精品| 欧美日韩免费在线| 99国产精品久久久久久久久久| 日韩亚洲精品在线| 欧美日本国产在线| 亚洲国产一区二区在线| 亚洲精品在线免费| av成人黄色| 亚洲欧洲99久久| 国产精品久久久久久福利一牛影视| 日韩午夜免费视频| 亚洲视频1区2区| 欧美视频日韩视频在线观看| 一本色道婷婷久久欧美| 午夜精品一区二区三区在线视 | 亚洲天堂av在线免费| 亚洲欧美日韩视频一区| 国产日韩精品视频一区二区三区| 亚欧成人在线| 免费在线观看一区二区| 亚洲日本va在线观看| 欧美激情一区二区三区高清视频| 亚洲精品美女久久7777777| 亚洲桃花岛网站| 国产日韩欧美视频在线| 久久久久久久久久久一区 | 欧美国产精品日韩| 亚洲视频在线观看| 国产欧美日韩综合精品二区| 久热国产精品| 一区二区成人精品 | 亚洲人成高清| 性欧美xxxx大乳国产app| 精品av久久707| 欧美日韩国产小视频在线观看| 亚洲欧美激情精品一区二区| 美日韩精品免费| 亚洲欧美大片| 亚洲国产精品福利| 国产精品国产馆在线真实露脸| 久久精品一区二区三区不卡牛牛| 最新69国产成人精品视频免费| 午夜一区二区三视频在线观看| 亚洲第一偷拍| 国产精品一区二区a| 免费视频一区| 午夜激情久久久| 亚洲精品社区| 久久综合久久综合久久| 亚洲一区二区三区四区在线观看| 一区二区在线看| 欧美亚洲第一区| 免费看成人av| 久久福利一区| 亚洲欧美日韩电影| 亚洲精品欧美日韩专区| 美日韩精品视频| 久久久久国产精品厨房| 亚洲一区影音先锋| 亚洲欧洲另类| 亚洲福利视频一区| 国一区二区在线观看| 国产精品美女一区二区| 欧美日韩国产电影| 欧美1级日本1级| 久久久亚洲欧洲日产国码αv| 一区二区三区欧美激情| 午夜一区二区三区不卡视频| 欧美一级日韩一级| 久久精品国产99国产精品澳门| 影音先锋另类| 日韩视频一区二区在线观看| 国产精品久久久亚洲一区 | 亚洲精选在线观看| 亚洲精品视频二区| 亚洲国产乱码最新视频| 免费观看成人网| 久久久久久久综合狠狠综合| 欧美中文字幕第一页| 香蕉久久一区二区不卡无毒影院| 亚洲一区二区高清| 亚洲视频中文字幕| 亚洲欧美日韩在线不卡| 欧美亚洲色图校园春色| 亚洲欧美三级伦理| 久久av在线看| 久久综合久色欧美综合狠狠| 麻豆乱码国产一区二区三区| 久久美女艺术照精彩视频福利播放| 久久三级福利| 欧美国产乱视频| 91久久久精品| 99成人免费视频| 亚洲一区免费视频| 欧美一区二视频| 蜜臀av性久久久久蜜臀aⅴ| 免费观看成人网| 亚洲在线国产日韩欧美| 欧美日韩在线不卡| 午夜精品久久久久久久| 久久se精品一区精品二区| 久久久五月天| 欧美日本高清| 国产欧美一区二区白浆黑人| 狠狠色伊人亚洲综合网站色| 亚洲青色在线| 亚洲欧美中文日韩v在线观看| 久久久久九九视频| 亚洲第一成人在线| 一区二区三区视频观看| 欧美在线观看视频一区二区三区 | 欧美日韩三级| 国产日韩欧美不卡| 91久久久一线二线三线品牌| 亚洲综合视频一区| 蜜臀av国产精品久久久久| av成人激情| 久久视频这里只有精品| 欧美小视频在线| 亚洲国产成人在线| 亚洲欧美日韩中文播放| 欧美xxx在线观看| 一区二区精品在线| 久久综合久久综合这里只有精品| 欧美性猛交一区二区三区精品| 国内在线观看一区二区三区| 国产精品99久久久久久有的能看| 久久久欧美精品| 夜夜嗨av一区二区三区网页| 久久亚洲欧美| 国产日韩欧美高清免费| 一本久久青青| 欧美国产免费| 久久免费精品日本久久中文字幕| 国产精品久久久久高潮| 亚洲免费观看| 欧美96在线丨欧| 欧美一区2区视频在线观看| 欧美色图首页| av成人免费| 亚洲国产欧美一区| 麻豆国产精品777777在线|