建立OpenGL MFC开发环境

原创 2007年09月20日 13:05:00

1.附加依赖性:    opengl32.lib glu32.lib glaux.lib

2.StdAfx.h 中添加:     #include <gl/GL.h>
               #include <gl/GLU.h>
              #include <gl/GLAux.h>
              #include <gl/glut.h>

3.添加成员函数及变量  还有消息相应函数:     

public:
 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
public:
 afx_msg void OnDestroy();
public:
 afx_msg void OnSize(UINT nType, int cx, int cy);
public:
 afx_msg void OnTimer(UINT_PTR nIDEvent);
public:
 bool RenderScene(void);
public:
 bool SetupPixelFormat(void);
public:
 void SetLogicalPalette(void);
public:
 bool InitializeOpenGL(CDC* pDC);
public:
 HGLRC m_hRC;
public:
 HPALETTE m_hPalette;
public:
 CDC* m_pDC;

4.在view类的PreCreateWindow函数中添加代码:cs.style |= WS_CLIPCHILDREN | WS_CLIPSIBLINGS;

5.VIEW类的OnCreate函数中添加代码:  m_pDC = new CClientDC(this);
                   SetTimer(1, 20, NULL);
                   InitializeOpenGL(m_pDC);

6.view类OnDestroy中添加:  ::wglMakeCurrent(0, 0);
               ::wglDeleteContext(m_hRC);
               if (m_hPalette)
               {
                  DeleteObject(m_hPalette);
               }
               if (m_pDC)
               {
                  delete m_pDC;
               }

7.在view类的OnSize中添加:  glViewport(0, 0, cx, cy);

8.在view类的OnTimer中添加:  Invalidate(FALSE);
9.设置逻辑调色板,在view类中添加函数: 

void CGraphicFormView::SetLogicalPalette(void)
{
 struct 
 {
  WORD Version;
  WORD NumberOfEntries;
  PALETTEENTRY aEntries[256];
 }logicPalette = {0x300, 256};
 BYTE reds[] = {0, 36, 72, 109, 145, 182, 218, 255};
 BYTE greens[] = {0, 36, 72, 109, 145, 182, 218, 255};
 BYTE blues[] = {0, 85, 170, 255};
 for (int colorNum = 0; colorNum < 256; ++colorNum)
 {
  logicPalette.aEntries[colorNum].peRed = reds[colorNum & 0x07];
  logicPalette.aEntries[colorNum].peGreen = greens[(colorNum >> 0x03) & 0x07];
  logicPalette.aEntries[colorNum].peBlue = blues[(colorNum >> 0x06) & 0x03];
  logicPalette.aEntries[colorNum].peFlags = 0;
 }
 m_hPalette = CreatePalette((LOGPALETTE*) &logicPalette);
}

10.添加初始化场景函数:

bool CGraphicFormView::InitializeOpenGL(CDC* pDC)
{
 m_pDC = pDC;
 SetupPixelFormat();
 m_hRC = ::wglCreateContext(m_pDC->GetSafeHdc());
 ::wglMakeCurrent(m_pDC->GetSafeHdc(), m_hRC);
 return TRUE;
}

11.设置像素格式:

bool CGraphicFormView::SetupPixelFormat(void)
{
 PIXELFORMATDESCRIPTOR pfd =
 {
  sizeof(PIXELFORMATDESCRIPTOR),
  1,
  PFD_DRAW_TO_WINDOW |
  PFD_SUPPORT_OPENGL |
  PFD_DOUBLEBUFFER,
  PFD_TYPE_RGBA,
  24,
  0, 0, 0, 0, 0, 0,
  0,
  0,
  0,
  0, 0, 0, 0,
  32,
  0,
  0,
  PFD_MAIN_PLANE,
  0,
  0, 0, 0
 };
 int pixelformat;
 pixelformat = ::ChoosePixelFormat(m_pDC->GetSafeHdc(), &pfd);
 ::SetPixelFormat(m_pDC->GetSafeHdc(), pixelformat, &pfd);
 if (pfd.dwFlags & PFD_NEED_PALETTE)
 {
  SetLogicalPalette();
 }
 return TRUE;
}

12.画图,在OnDraw中实现。

 

VC++2010环境下基于MFC框架的OpenGL的编程环境的配置

在MFC下初始化OpenGL编程环境    1:新建一个MFC的工程,单文档的工程。 2:工程建好之后,可以先编译运行一下。下面就是要把View的窗口初始化...
  • zhaozhixiang2025
  • zhaozhixiang2025
  • 2013年05月30日 14:38
  • 4548

VS 2012环境下使用MFC进行OpenGL编程

VS 2012下使用MFC+OpenGL基本步骤 引子:以前一直惧怕MFC感觉它是一个非常复杂的东西,更不用说去用它来和OpenGL结合了,以前是一直羡慕别人用MFC创建一个窗口进行OpenGL绘图...
  • bbppbb
  • bbppbb
  • 2014年04月22日 21:11
  • 6333

MFC 中配置OpenGL环境

MFC为编写Windows应用程序提供了极大的方便,程序员在编写Windows应用程序时,只需要几步就可以把一个程序的框架建立起来.该类极大的提高了编程者的开发效率,是个具有极大实用价值的工具. ...
  • xiaoge132
  • xiaoge132
  • 2016年03月09日 09:45
  • 2439

OpenGL ES 在 iOS 平台上原生开发环境的 Xcode 工程建立

OpenGL ES 在 iOS 平台上原生开发环境的 Xcode 工程建立
  • sleks
  • sleks
  • 2013年12月25日 01:30
  • 2106

OpenGL开发环境依赖 C/C++

  • 2017年06月25日 11:27
  • 7.73MB
  • 下载

自用OpenGL开发环境配置,包含.h\.dll\.lib,比较全

  • 2017年11月17日 16:54
  • 1.4MB
  • 下载

opengl开发环境

  • 2011年07月28日 17:04
  • 660KB
  • 下载

OpenGL CAD开发环境

  • 2007年01月15日 00:49
  • 1.99MB
  • 下载

OpenGL及其在VC_开发环境下的编程实现

  • 2011年04月09日 21:46
  • 265KB
  • 下载

OpenGL中文教程-QT开发环境

  • 2014年09月22日 19:43
  • 1.18MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:建立OpenGL MFC开发环境
举报原因:
原因补充:

(最多只允许输入30个字)