OpenGL Programming for Windows MFC
3.Scamped Animation
3.1 XXXView.h に以下のメンバー変数追加
CDC* m_pDC ; // Device Context
HGLRC m_GLRC ; // OpenGL Rendering Context
GLfloat m_rAngle ; // Rotation angle
This member variable addition to XXXView.h.
3.2 CXXXView(コンストラクタ)に以下の行を追加
CXXXView::CXXXView()
{
m_rAngle = 0.0 ;
}
The above line is added to CXXXView(Constructor).
3.3 OnDraw を以下のように変更
void CXXXView::OnDraw(CDC* pDC)
{
CXXXDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
InvalidateRect (NULL, FALSE);
m_rAngle += 2.0 ;
if (m_rAngle >= 360.0f) {
m_rAngle = m_rAngle - 360.0f ;
}
DrawGL(m_rAngle) ;
SwapBuffers(m_pDC->m_hDC) ; // Double buffer
}
OnDraw is changed as mentioned above.
3.4 DrawGL を以下のように変更
GLint DrawGL(GLfloat rAngle)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) ;
glMatrixMode(GL_MODELVIEW) ;
glLoadIdentity() ;
glTranslated(0.0, 0.0, -3.0) ;
glRotatef(rAngle, 0.0f, 1.0f, 0.0f) ;
auxWireTeapot(1.0) ;
return(0) ;
}
DrawGL is changed as mentioned above.
3.5 Build and Execute
ビルド・実行すると、Teapotオブジェクトが回転する。
A Teapot object rotates.
解説書などでは、アニメーションは SetTimer を使用するようになっているが、
Windows9x のタイマーがタコなためうまく
いかない場合がある。
prev next