程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 利用OpenGL實現動畫效果

利用OpenGL實現動畫效果

編輯:關於VC++

本程序主要通過不斷改變視口位置來模仿動畫效果,同時介紹了在進行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()。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved