QQ登录

只需一步,快速开始

144上位机VC MFC使用OPenGL绘制三维矩形

[ 复制链接 ]

144上位机VC MFC使用OPenGL绘制三维矩形

144上位机VC MFC使用OPenGL绘制三维矩形

144上位机VC MFC使用OPenGL绘制三维矩形


功能展示

OPenGL可以很方便的绘制三维方面的动画,我们当前使用实现OPenGL环境的初始化,并绘制一个三维的矩形,效果如图;
要点提示
使用OPENGL前得向工程加载它的静态文件及所在的头文件,通过 我们例程中几行代码便可#include"gl\gl.h“ #include "gl\glu.h“ #include "gl\glaux.h"#pragmacomment(lib,"opengl32.lib")#pragmacomment(lib,"glu32.lib") #pragma comment(lib,"glaux.lib")

另外窗口得具备属性WS_CLIPSIBLINGS |WS_CLIPCHILDREN才能更好显示效果;
在glPushMatrix()数据入栈操作, glPopMatrix()数据出栈操作两函数之间设置矩形的顶点数据,然后将glBigin()函数设置为GL_QUADS.函数glNormal3fv用于设置当前点,glVertex3fv用于设置矩形顶点,函数glColor3fv用于设置顶颜色值;





实现功能
1.新建基于对话框的应用程序
2.初始化OPENGL环境,在主对话框头文件添加#include "gl\gl.h"
#include "gl\glu.h“ #include"gl\glaux.h"#pragma comment(lib,"opengl32.lib")
#pragma comment(lib,"glu32.lib") #pragmacomment(lib,"glaux.lib")

3.添加变量HGLRC m_hOpenglRC; 变量在OnInitDialog()初始化,在OnDestroy()销毁
  1. ModifyStyle(0,WS_CLIPSIBLINGS | WS_CLIPCHILDREN,0);//设置窗口属性;
  2. static PIXELFORMATDESCRIPTOR pfd =
  3.         {
  4.         sizeof(PIXELFORMATDESCRIPTOR),  //
  5.         1,                              //
  6.         PFD_DRAW_TO_WINDOW |            //
  7.           PFD_SUPPORT_OPENGL |          //
  8.           PFD_DOUBLEBUFFER,             //
  9.         PFD_TYPE_RGBA,                  //
  10.         24,                             //
  11.         0, 0, 0, 0, 0, 0,               //
  12.         0,                              //
  13.         0,                              //
  14.         0,                              //
  15.         0, 0, 0, 016,        //
  16.         0,                              //
  17.         0,                              //
  18.         PFD_MAIN_PLANE,                 //
  19.         0,                              //
  20.         0, 0, 0                         //
  21.     };
复制代码
  1. int pixelformat=::ChoosePixelFormat(GetDC()->m_hDC,&pfd);
  2.         if(pixelformat==0)
  3.         {
  4.                 AfxMessageBox("初始化失败");
  5.                 return -1;
  6.         }
  7.         SetPixelFormat(GetDC()->m_hDC,pixelformat,&pfd);
  8.         m_hOpenglRC=wglCreateContext(GetDC()->m_hDC);
  9.         wglMakeCurrent(GetDC()->m_hDC,m_hOpenglRC);
  10. void CGkbc8Dlg::OnDestroy()
  11. {
  12.         wglDeleteContext(m_hOpenglRC);
  13.         CDialog::OnDestroy();
  14. }
复制代码
  1. 在对话框源文件顶部添加静态变量
  2. static GLfloat p1[]={0.5,-0.5,-0.5};
  3. static GLfloat p2[]={0.5,0.5,-0.5};
  4. static GLfloat p3[]={0.5,0.5,0.5};
  5. static GLfloat p4[]={0.5,-0.5,0.5};
  6. static GLfloat p5[]={-0.5,-0.5,0.5};
  7. static GLfloat p6[]={-0.5,0.5,0.5};
  8. static GLfloat p7[]={-0.5,0.5,-0.5};
  9. static GLfloat p8[]={-0.5,-0.5,-0.5};
  10. static GLfloat m1[]={1.0,0.0,0.0};
  11. static GLfloat m2[]={-1.0,0.0,0.0};
  12. static GLfloat m3[]={0.0,1.0,0.0};
  13. static GLfloat m4[]={0.0,-1.0,0.0};
  14. static GLfloat m5[]={0.0,0.0,1.0};
  15. static GLfloat m6[]={0.0,0.0,-1.0};
  16. static GLfloat c1[]={0.0,0.0,1.0};
  17. static GLfloat c2[]={0.0,1.0,1.0};
  18. static GLfloat c3[]={1.0,1.0,1.0};
  19. static GLfloat c4[]={1.0,0.0,1.0};
  20. static GLfloat c5[]={1.0,0.0,0.0};
  21. static GLfloat c6[]={1.0,1.0,0.0};
  22. static GLfloat c7[]={0.0,1.0,0.0};
  23. static GLfloat c8[]={1.0,1.0,1.0};
  24.         
复制代码
  1. 在OnPaint() 函数中绘制在OnSize()调整大小
  2. void CGkbc8Dlg::OnSize(UINT nType, int cx, int cy)
  3. {
  4.         CDialog::OnSize(nType, cx, cy);
  5.         
  6.         if ( 0 >= cx || 0 >= cy )
  7.         {
  8.                 return;
  9.         }

  10.         ::glViewport(0,0,cx,cy);
  11.         ::glMatrixMode(GL_PROJECTION);
  12.     ::glLoadIdentity();
  13.         GLdouble dblaspect = (GLdouble)cx/(GLdouble)cy;
  14.         ::gluPerspective(40.0f,dblaspect,.1f, 20.0f);
  15.         ::glMatrixMode(GL_MODELVIEW);
  16.     ::glLoadIdentity();
  17.         ::glTranslatef(0.0f,0.0f,-5.0f);
  18.         ::glRotatef(20.0f, 1.0f, 0.0f, 0.0f);
  19. }
复制代码
我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:144.上位机VC MFC使用OPenGL绘制三维矩形.rar 
文件大小:126.13 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索