制作一个基于MFC对话框的OpenGL类
来源:互联网 发布:大数据介绍 编辑:程序博客网 时间:2024/05/22 16:47
来源:http://www.yesky.com/342/1917842.shtml
在我的程序中,需要在一个小的对话框中创建一个OPENGL绘制窗口,所以略去了其中的全屏和常屏显示功能。
创建步骤如下:
1.创建一个新的类COpenGLWnd,基于CWnd类。
1.1 重载Create函数,在其中创建一个窗口用以绘制
void COpenGL::Create(CRect rect, CWnd *parent)
{
if (m_bInit) return;
ASSERT(rect);
ASSERT(parent);
m_rect = rect;
m_parent = parent;
CString className = AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW | CS_OWNDC,NULL,(HBRUSH)GetStockObject(BLACK_BRUSH),NULL);
CreateEx(0,className,"OpenGL",WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS| WS_CLIPCHILDREN | CS_SAVEBITS,rect,parent,0);
}
1.2 创建消息映射函数OnCreate,OnPaint,OnSize函数,以及InitGL,KillGLWindow完成OPENGL绘制类的基本工作。RenderScene函数中OPENGL的场景渲染代码。
至此,OPENGL绘制窗口类已经被封装好,只需要在调用它的对话框类中将它实例化就OK了!
2. 在CMotionViewDlg类中,包含此绘制类的头文件。
2.1 在对话框中加入一个static控件,设置为不可见(取消visible选项);在OnInitDialog()中加人下面这段代码(假设控件ID为IDC_OPENGL,m_openGL是类COpenGL的对象):
CRect rect;
GetDlgItem(IDC_OPENGL)->GetWindowRect(rect);
ScreenToClient(rect);
m_openGL.Create(rect, this);
2.2 在适当的地方调用RenderScene方法
void COpenGL::RenderGLScene()
{
if(!m_bInit) return;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer
glLoadIdentity();
glTranslatef(0.0f,-30.0f,-200.0f);
glRotatef(40.0, 0.0, 1.0, 0.0);
//渲染代码测试
glColor3f(0.5, 0.5, 0.5);
glBegin(GL_LINES);
for (int i = -100; i <= 100; i += 20)
{
glVertex3f(i, 0.0, -100.0);
glVertex3f(i, 0.0, 100.0);
glVertex3f(-100.0, 0.0, i);
glVertex3f(100.0, 0.0, i);
}
glEnd();
SwapBuffers(m_hDC);
Invalidate(FALSE);
}
在我的程序中,需要在一个小的对话框中创建一个OPENGL绘制窗口,所以略去了其中的全屏和常屏显示功能。
创建步骤如下:
1.创建一个新的类COpenGLWnd,基于CWnd类。
1.1 重载Create函数,在其中创建一个窗口用以绘制
void COpenGL::Create(CRect rect, CWnd *parent)
{
}
1.2 创建消息映射函数OnCreate,OnPaint,OnSize函数,以及InitGL,KillGLWindow完成OPENGL绘制类的基本工作。RenderScene函数中OPENGL的场景渲染代码。
至此,OPENGL绘制窗口类已经被封装好,只需要在调用它的对话框类中将它实例化就OK了!
2. 在CMotionViewDlg类中,包含此绘制类的头文件。
2.1 在对话框中加入一个static控件,设置为不可见(取消visible选项);在OnInitDialog()中加人下面这段代码(假设控件ID为IDC_OPENGL,m_openGL是类COpenGL的对象):
CRect rect;
GetDlgItem(IDC_OPENGL)->GetWindowRect(rect);
ScreenToClient(rect);
m_openGL.Create(rect, this);
2.2 在适当的地方调用RenderScene方法
void COpenGL::RenderGLScene()
{
//
}
0 0
- 制作一个基于MFC对话框的OpenGL类
- 制作一个基于MFC对话框的OpenGL类
- 制作一个基于MFC对话框的OpenGL类
- 制作一个基于MFC对话框的OpenGL类
- 基于MFC对话框的OpenGL类
- 基于MFC对话框的OpenGL类
- 基于MFC 对话框的OPENGL学习
- 基于MFC的对话框Dialog的OpenGL程序框架
- 基于MFC对话框的OpenGL三维图形开发
- 基于MFC对话框的OpenGL三维图形开发
- MFC基于对话框的用Picture Control显示OpenGL
- 用MFC的对话框制作一个简易的图片浏览器
- 基于MFC的OpenGL的一个简单例子
- 基于对话框的Opengl框架
- vs2008创建一个基于对话框的mfc工程
- vs2008创建一个基于对话框的mfc工程
- MFC对话框的OpenGL类实例之二
- 基于MFC的OpenGL绘图
- Surface,SurfaceView,SurfaceHolder及SurfaceHolder.Callback的关系
- OpenGL学习笔记(12)基本光照
- OpenGL学习笔记(13)位图与文字
- OpenGL学习笔记(14)像素操作
- OpenGL读取3DS文件示例(C++语言编写
- 制作一个基于MFC对话框的OpenGL类
- 制作一个基于MFC对话框的OpenGL类
- Mysql千万级别数据优化方案
- MFC对话框的OpenGL类实例之二
- 基于MFC对话框的OpenGL三维图形开发
- GLUT 工具箱函数
- C#Winform设置时不调用
- opengl学习(五)一个机械臂程序,有关模型转换
- 下载外文文献的一点心得(知网免费账号,亲测可用)