Click here to Skip to main content
Licence 
First Posted 1 Oct 2001
Views 73,107
Bookmarked 26 times

A WTL class for developping OpenGL programs using WTL

By | 1 Oct 2001 | Article
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

About the Author

Zilin

Web Developer

United States United States

Member



Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
Generala small correction of COpenGL::OnSize(..) PinmemberHunt Chang18:42 5 Oct '09  
GeneralRe: a small correction of COpenGL::OnSize(..) Pinmemberbible~18:28 9 Aug '11  
Questionwhat is the function of CGLMessageLoop? [modified] PinmemberHunt Chang18:40 29 Sep '09  
Generalatlres.h Pinmemberpeterdrozd8:16 20 Dec '05  
GeneralOpengl error PinsussAnonymous10:10 24 Apr '05  
GeneralRe: Opengl error Pinmembertdziki10:25 11 Jan '07  
GeneralI use my view derived from COpenGL<>, and it works well Pinmembergu mingqiu2:50 13 Sep '04  
QuestionFullscreen/Windowed switch? Pinmember_leech_20:01 25 May '04  
QuestionHow to draw openGl in dialog box use WTL PinsussAnonymous21:22 7 May '04  
GeneralSome problems on Win2K Pinmembercdr17:18 8 Oct '01  
GeneralRe: Some problems on Win2K PinmemberZilin6:26 10 Oct '01  
GeneralRe: Some problems on Win2K Pinmembercdr19:17 11 Oct '01  

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.

Permalink | Advertise | Privacy | Mobile
Web04 | 2.5.120517.1 | Last Updated 2 Oct 2001
Article Copyright 2001 by Zilin
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid