您的位置:逆风者 VC++ 正文
 添加时间:2007-09-01 原文发表:2007-08-31 人气:50 来源:vckbase.com

利用OpenGL实现动画效果


作者:浮萍工作室

下载源代码
逆@风@者

本程序主要通过不断改变视口位置来模仿动画效果,同时介绍了在进行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()。
相关文章

实现类似Excel和Visual C 里文件夹式样的标
深入浅出 CPropertySheet
对《一个简单的学生成绩管理系统》优化的一
在MFC中用正则表达式对窗体进行有效性验证
如何在NT下获取进程的路径(增补)
高效开发与彻底测试
对话框模板,RegexTest
在MDI程序中实现类似WPS2000的文件切换标签
用DirectShow抓取影片帧
用微软的实时通信API集成丰富的客户端通信
一个简单的时钟程序
一个完善的ODBC数据库程序
如何定制浮动工具条
一步步制作真彩工具条
自动查找并删除VC生成的临时文件
在VC中调用 WebService (非托管)
如何选中其他程序ListView控件中的某个Item
用C#语言实现http协议下的多线程文件传输
如何提取网页中所有链接
DCT快速变换

相关评论


本文章所属分类:首页 VC++

  热门关键字: