Computer graphic --OpenGL Tutorial
About me • Who: Jie Chen • What: Teaching assistant, Lab exercises • How: TS329 • Email:
[email protected] 2
• Website: http://www.ee.oulu.fi/~jiechen/Course.htm • Prerequisite programming skills using C/C++
3
• Tools: OpenGL • Task: what OpenGL is and how it enables us to program in 3D. • GL: graphic library
4
What is OpenGL? • It's a way to draw stuff in 3D. – It can also be used for 2D drawing, but this course doesn't focus on that. There are better tools for straight 2D drawing, such as SDL and Allegro.
• The purpose of OpenGL is to communicate with the graphics card about our 3D scene. – The graphics card is where the 3D computation happens. – So why not talk to the graphics card directly? • Each graphics card is a little different. • In a sense, they all speak different "languages". To talk to them all, we can either learn all of their languages, or find a "translator" that knows all of their languages and talk to the translator, so that we only have to know one language. • OpenGL serves as a "translator" for graphics cards. 5
Some Terminologies • OpenGL – GL: graphic library – a software interface to graphics hardware. – This interface consists of about 150 distinct commands.
6
Some Terminologies • GLU (OpenGL Utility Library) – GLU is a standard part of every OpenGL implementation. – A sophisticated library that provides the features could be built on top of OpenGL. – Provides many of the modeling features, such as • quadric surfaces and • NURBS (Non-Uniform Rational B-Spline) curves and surfaces.
7
Some Terminologies • GLUT (OpenGL Utility Toolkit) – a window system independent toolkit for writing OpenGL programs. – It implements a simple windowing application programming interface (API) for OpenGL. – GLUT makes it much easier to learn about and explore OpenGL Programming. – Controlling the IO layer • input: mouse and keyboard • output: visual windows
8
Include Files • For all OpenGL applications, we need to include the gl.h header file in every file. • Almost all OpenGL applications use GLU, which requires inclusion of the glu.h header file. So almost every OpenGL source file begins with – #include – #include
• If we are using GLUT for managing our window manager tasks, we should include – #include
• Note that glut.h includes gl.h and glu.h automatically 9
Getting OpenGL Set Up • In following part, we will show how to get OpenGL and GLUT set up on Windows, so that we can get started making 3D programs. • we can use OpenGL on other operating systems, but this part doesn't cover how to get it set up on those OSes. – Mac OS X http://www.videotutorialsrock.com/opengl_tutorial/get_opengl_se tup_mac_osx/home.php
– Linux http://www.videotutorialsrock.com/opengl_tutorial/get _opengl_setup_linux/home.php 10
Getting OpenGL Set Up on Windows • Explain how to get OpenGL and GLUT set up on Windows (e.g., windows XP). • Use the Visual C++ 6.0. • You can also use other version, such as Visual C++ 2003, 2005, 2008. – CSE: Computer science and engineering laboratory • You can find it in our server
– Other department: • you can downloade here: • http://msdn.microsoft.com/zh-cn/express/default.aspx • You have to register, which is free, within 30 days. 11
OpenGL • Download – OpenGL installer – GLUT binary • http://www.ee.oulu.fi/~jiechen/Course.htm • Lecture notes ->Lecture 3
12
OpenGL setup • Run the OpenGL installer.
13
GLUT setup • Extract GLUT to the directory of your choice. • We can do this by creating a new directory, locating and opening the ZIP file using Windows Explorer, and copying the files to the new directory using copy-paste. • Alternatively, We can use a free program like WinZip to extract GLUT.
14
GLUT setup • In the directory GLUT, make two folders – one called "include" and – one called "lib".
• File assignment: – In the "include" folder, create another folder called "GL", and move glut.h to that folder (..\Include\GL). – Move all of the other extracted files for GLUT into the "lib" folder. 15
Setup for Visual C++ • Run Visual C++ • Go to Tools -> Options-> Directories • Adding " GLUT \include", and " GLUT \lib"
16
Setup for Visual C++ • glut32.dll (dll: Dynamic-link library)
17
Compiling and Running the Test Program • To make sure that everything was set up correctly, we're going to see if we can get a test program to work. • Download test program and extract it somewhere on your computer. – http://www.ee.oulu.fi/~jiechen/Course.htm – Lecture notes ->Lecture 3
18
Compiling and Running the Test Program • Run Visual C++. • Go to File -> New -> Project • Select Win32 Console applications • Set the project file location. • Enter in a name for your project (such as “CG") and click ok. 19
Compiling and Running the Test Program • Select “a ‘hello world’ applications” • click “Finish” to finish creating the project.
20
Compiling and Running the Test Program • File copy – extracted the downloaded test program – Copy the following files to the current folder
21
Compiling and Running the Test Program • File content modification – Copy the code in main.cpp to replace those in CG.cpp – Add #include "stdafx.h” at the beginning of CG.cpp
22
Compiling and Running the Test Program • Change from "Debug" to "Release".
23
Compiling and Running the Test Program • File adding – Two files: imageloader.h and imageloader.cpp – Press ok
24
Compiling and Running the Test Program • File adding – Lib file: glut32.lib – Press ok
25
Compiling and Running the Test Program • Workspace view
26
Compiling and Running the Test Program • Go to Build -> Build project_name (e.g., Build CG.cpp) to build our project.
27
Compiling and Running the Test Program • Run it!
28
Compiling and Running the Test Program • Take a look at main.cpp. – Notice that the include directives for OpenGL appear after the #include directives for the normal C++ include files. – If we had them in the opposite order, you'd get a compiler error. So make sure that the include files for the standard C++ stuff appear before the include files for OpenGL.
Correct
ERROR 29
Compiling and Running the Test Program • Whew! We've finished setting up OpenGL. • Now we're ready to learn how to program in 3D.
30
Demo
31
• OpenGL Programming Guide or ‘The Red Book’ – http://unreal.srk.fer.hr/theredbook/
32
• The end of this lecture!
33