Overview
Recently, I studied up on how to write OpenGL programs. I have tried GLUT, a window system independent toolkit for
writing OpenGL programs. But I don't like it since it is C-style and need an additional glut32.dll. I have
played with WTL for a while, I really like this great framework for developing Win32
program, so I decided
to write OpenGL programs using WTL.
Actually, WTL DOES provide OpenGL support in atlgdi.h
. If you didn't define _ATL_NO_OPENGL
,
you should be able to use ChoosePixelFormat
, wglCreateContext
, etc. However, you have
to do a lot of work every time to write an OpenGL program. For simplification, I developed a class COpenGL
which can be easily plugged into your WTL programs.
Using COpenGL
COpenGL
is a template class which implements most necessary work for OpenGL. It is defined in
atlopengl.h
. For using it in your program, you have to do the following steps: (assume your main program
is Cube.cpp
, your OpenGL window is CMainFrame
.)
- copy
atlopengl.h
to WTL\include
.
- add
#include <atlopengl.h>
in Cube.cpp
file.
- derive your OpenGL window
CMainFrame
from COpenGL<CMainFrame>
.
- chain message map to
COpenGL
by adding CHAIN_MSG_MAP(COpenGL<CMainFrame>)
in
CMainFrame
's message map.
- if you have implemented
OnCreate
function in CMainFrame
, set bHandled = FALSE;
before return 0;
- implement three functions in
CMainFrame
: OnInit(), OnRender(), OnResize()
- (optional) if you want to do animation, derive
CMainFrame
from CIdleHandler
and implement
OnIdle
. In additional, change CMessageLoop
to CGLMessageLoop
in Cube.cpp
.
(you have to do this, otherwise, you cannot get animation).
Similarly you can use it in your view windows. Read
atlopengl.h
and the demo project for more details.
Conclusion
atlopengl.h
is still very simple, but it is a good start for writing OpenGL programs using WTL.
Comment
Partial codes in demo project generated by "OpenGL AppWizard" developed by Ulf �hl�n.
See here for details.