OpenGL enabled view for MDI

Introduction

CGEnabledView is a view class designed to wrap all OpenGL stuff (initialization, managing of Rendering Contexts and palettes, destruction, etc.) allowing the creation of multiple views in a MDI application.
CGEnabledView also offers these services:

  • a function to get various information about OpenGL implementation.
  • manages internally the creation of up to 20 stock display list and offers a basic interface for display list creation, execution and deletion (this function has been surpassed by CGLDispList child class,see below).
  • let you choose a mouse cursor to use inside the views.

Three child classes offer an object oriented interface to OpenGL tessellation routines, quadrics objects and display lists:

  1. CGLDispList: let you manage display lists individually.
  2. CGLTesselator: let you create tesselator objects by which draw non simple polygons (that is convex or self intersecting ones).
  3. CGLQuadric: let you draw spheres, cylinders and disks specifying draw style, textures coordinates generation, normals generation and orientation.

Basic Use

The minimal setup to start experimenting OpenGL drawing is as follows:
  1. Use AppWizard to geneate an MDI project.
  2. Substitute CView with CGLEnabledView in [YourProject]View.cpp and [YourProject]View.h.
  3. Use ClassWizard to remove the OnDraw and PreCreateWindow functions (delete the bodies too).
  4. Override the VideoMode function if you would like to set the number of colors, the accuracy of the Z-buffer (note that some accelerated video cards don't support 32 bit accurate z-buffer) and activation of double-buffer.
  5. Override the OnDrawGL function and issue some GL commands.
  6. If you must issue GL commands outside overridable functions (e.g. in menu handlers) enclose them in a BeginGLCommands(), EndGLCommands() pair.
Remember to link OpenGL libraries (look at the beginning of GLEnabledView.cpp for explanations). Other details are in the sample project and in the source (wich should be well commented).

Notes

Since it's not adviseable to mix Windows GDI and OpenGL drawing commands some WM message handlers have been made private, use the supplied overridable virtual functions instead (OnDrawGL,OnSizeGL and OnCreateGL).

Download demo project - 133KB

Download source - 13KB

Date Posted: ??/??/98



Comments

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Webinar June 2, 2015 - 11 am PST / 2 pm EST Your organization and brand are increasingly digital today, proliferating across websites, media outlets, social networks, search engines, mobile apps, online marketplaces and more. Each digital touch point not only enhances the value of your brand, but also represents far greater risk for your company. They increase opportunities for brand defamation and data leakage; act as discreet places to conspire and collude; and open the door to new security …

  • Discover how to quickly remediate aggressive security threats. Read this report from Forrester Research and get the facts about new automated compliance processes and how they will reduce your organization's vulnerability and risk. Learn to: Adopt a set of cyber "Rules of Engagement" Define the appropriate response through the "Response Index" Create actionable response metrics Ensure multiple levels of audit and reinforcement Plus, find out how to better align security and operations teams and put the …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date