Click here to Skip to main content
Click here to Skip to main content

A WTL class for developping OpenGL programs using WTL

, 1 Oct 2001
Rate this:
Please Sign up or sign in to vote.
A class to develop OpenGL programs which can be easily plugged into your WTL programs

Sample Image

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.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

Zilin
Web Developer
United States United States
No Biography provided

Comments and Discussions

 
Questionwhat is the function of CGLMessageLoop? [modified] PinmemberHunt Chang29-Sep-09 18:40 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web04 | 2.8.140821.2 | Last Updated 2 Oct 2001
Article Copyright 2001 by Zilin
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid