Chinaunix首页 | 论坛 | 博客
  • 博客访问: 589240
  • 博文数量: 752
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:47
文章分类

全部博文(752)

文章存档

2011年(1)

2008年(751)

我的朋友

分类:

2008-10-13 16:47:58

利用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 
          
在构造函数之前手工添加:
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()。
--------------------next---------------------

怎么编译成功了还是什么都没有,一片空白的? ( Hhuang 发表于 2005-12-2 23:28:00)
 
作者写的不错的,程序做的不错,但是解释可能不太清楚吧,所以这么多人问同一个问题,具体设置:
把作者的程序当到机器下,然后利用VC打开,利用作者的讲解,在“project->settings->link->object/library modules中输入 opengl32.lib GLU32.lib glaux.lib 在FileView标签中把opengl.lib glu32.lib glaux.lib三个文件删除,编译就可以,(作者出于好心,把三个文件直接包含进去工作环境中了,所以。。。)
因为vc6.0自身就支持OPENGL,所以不用在网上下,直接设置要用OPENGL动态库就可以了。
作者的程序我下了运行了一下,真的不错,虽然简单。因为OPENGL文章的讲座太少了,支持作者在多发关与这方面的文章。 ( lysunjie 发表于 2004-9-6 15:05:00)
 
fatal error LNK1104: cannot open file "C:\Program Files\Microsoft Visual Studio\VC98\Lib\GLU32.LIB"


添加一个 lib 文件  GLU32.LIB,这个文件你可以在网上下载
( shliwan 发表于 2004-7-19 22:35:00)
 
编译了呀,用的是新的 OpenGL3.7.6,运行也没有问题,结果就是,什么也没有弹出来,可执行文件倒是有一个,1.25M ( wgjmail 发表于 2004-2-24 9:45:00)
 
我运行后出现错误为何啊,帮帮我:
LINK : fatal error LNK1104: cannot open file "C:\Program Files\Microsoft Visual Studio\VC98\Lib\GLU32.LIB"
( google2000 发表于 2003-11-30 21:38:00)
 
可不可以多写一点关于OpenGL的东西,我是这方面的初学者,谢谢 ( sololxy 发表于 2003-7-16 9:09:00)
 
.......................................................

--------------------next---------------------

阅读(270) | 评论(0) | 转发(0) |
0

上一篇:基于API的录音机程序

下一篇:DCT快速变换

给主人留下些什么吧!~~