LLC501: Programming with OpenGL

Overview
This course is tailor made for the wannabe 3D graphics enthusiast. The course initiates a person with 3D programming using OpenGL and provides a foundation of OpenGL concepts using which you can begin exploring the capabilities of OpenGL and write 3D enabled applications. At the end of the course you would be able to create 3D scenes, orient objects in the scene, place lights in the scene, apply texture and use transparent objects in the scene. The course has a hands on approach to teaching OpenGL in that the participants will take part in designing and implementing a C++ library on top of OpenGL to help create simple 3D scenes.

Pre-Requisites
Sound knowledge of C and C++. Knowledge of Qt, (LLC105) would be a plus point. Basic knowledge of Trigonometry, Matrices and Algebra and other related math domains.

Target Audience
The course is targeted at developers who have not worked or worked little on 3D programming libraries. This course is a must for developers interested in learning about OpenGL and getting started with 3D Programming.

Duration: 3 days (Full-time)

Training Fee: Call or Email us


Course Outline

Introduction

  • Getting Started with OpenGL
  • What is OpenGL
  • Materials provided in the course
  • Your First OpenGL Program
    • The QGLWidget Class
    • The initializeGL() method
    • The paintGL() method
    • The resizeGL() method
  • OpenGL Command Syntax
    • Function Naming Convention
    • Constants, Datatypes & Macro naming conventions
  • OpenGL as a State Machine
  • Libraries related to OpenGL
  • Animations in OpenGL

Drawing Objects

  • Describing a Solid Object: Geometry & Topology
  • OpenGL Primitives
    • Primitive Types
    • Polygon construction rules
  • Solid Object Examples
    • Cube
    • Cone
    • Cylinder
  • Drawing solid objects using GLUT Library

Coordinate Transformations

  • Types of transformations
    • Translation
    • Scaling
    • Rotation
  • Matrix Representation of Transformations
    • Vertex Matrix
    • Translation Matrix
    • Scaling Matrix
    • Rotation Matrix
  • Composition of transformation matrices
  • Understanding transformations in OpenGL
    • Eye Coordinates
    • Viewing Transformations
    • Modeling Transformations
      • The Model View duality
    • Projection Transformations
    • Viewport Transformations
  • Specifying Transformations in OpenGL
  • Atom Example

Camera Manipulation

  • Viewing in 3D
    • Projection
    • Parallel ProjectionMath
    • Perspective Projection Math
  • Model View Duality
    • Atom Example Improved
  • Parallel and Perspective Projections.

Lights, Color, Materials, depth test

  • Representation of a color in OpenGL
  • Specifying Color in OpenGL
  • Shading
  • The Color Cube
  • Colors in the Real World
  • Light Concepts and Categories
    • Ambient Light
    • Diffuse Light
    • Specular Light
  • Materials Concepts
  • Surface Normals
  • OpenGL Lights and Materials
  • Spot Lights
  • Drawing Curved Surfaces
  • The glColorMaterial() function

Texture Mapping

  • Specifying the texture
  • Indicate how the texture is to be applied to each pixel
  • Enable texture mapping
  • Draw the scene, supplying both texture & geometric coordinates

XModel: Simple C++ wrapper for OpenGL

OpenGL Based Toolkits

  • Open Inventor
  • OpenSGVTK