WEB开发网
开发学院软件开发VC 利用OpenGL实现动画效果 阅读

利用OpenGL实现动画效果

 2008-02-26 20:27:16 来源:WEB开发网   
核心提示:本程序主要通过不断改变视口位置来模仿动画效果,同时介绍了在进行opengl绘图时所做的一些不可或缺的准备工作,利用OpenGL实现动画效果,一、首先新建一个 “Win32 Application” 的空工程, 二、然后将 “glu32.lib glaux.lib opengl32.l

本程序主要通过不断改变视口位置来模仿动画效果,同时介绍了在进行opengl绘图时所做的一些不可或缺的准备工作。

一、首先新建一个 “Win32 Application” 的空工程。 

二、然后将 “glu32.lib glaux.lib opengl32.lib” 引入工程之中。

三、在工程->设置->General里将 “Microsoft Foundation Classes” 改为“Use MFC in a Static Library”。 

四、因为我们建立的是一个空工程,所以必须为此工程添加必要的类代码。先建一个 OpenGLApp 类,基类是 CWinApp,构造函数和析构函数都为空,同时添加一个 BOOL 型的 InitInstance(),用来显示窗口。其内容如下: OpenGLWin* pMainWnd = new OpenGLWin;
  pMainWnd->ShowWindow(SW_SHOWNORMAL);
  pMainWnd->UpdateWindow();
  m_pMainWnd = pMainWnd;
  return TRUE;
别忘了在实现文件里添加app对象 OpenGLApp app;

五、下面建立另一个类 OpenGLWin,其基类是CFrameWnd

手工添加以下消息映射: protected:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnPaint();
afx_msg void OnDestroy();
DECLARE_MESSAGE_MAP()
     
添加如下函数及变量: void drawsphere();  
  void OnDrawSin();
  void myinit();
  HGLRC hglrc; //rc句柄
    
头文件构造完毕。下面是实现文件:首先添加头文件 #include "gl\gl.h"
#include "gl\glu.h"
#include "gl\glaux.h"
#include <math.h>
     
在构造函数之前手工添加: BEGIN_MESSAGE_MAP(OpenGLWin, CFrameWnd)
  ON_WM_CREATE()
  ON_WM_PAINT()
  ON_WM_DESTROY()
END_MESSAGE_MAP()
     
构造函数内容如下: myinit();
  Create(NULL, "OpenGLApp---FLoat WorkStudio");
     
用以创建缺省的窗口,及初始化。初始化函数: void OpenGLWin::myinit()
{
  glClearColor(0.0,0.0,0.0,1.0);////背景色清屏色
  glClear(GL_COLOR_BUFFER_BIT);
  //  glVertex3d(0.4,0.4,0.4);
}
 

 下面用drawsphere()来绘制实体球。 在OnDrawSin()里通过改变视口来用 drawsphere() 绘制的球模仿两种周期不同的正弦曲线。最后在OnPaint()里调用OnDrawSin()在窗口内绘制动画。当然也不要忘了必要的销毁工作 OnDestroy()。

Tags:利用 OpenGL 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接