cse328:computer graphics opengl tutorial dongli zhang department of computer science, sbu...
TRANSCRIPT
![Page 1: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/1.jpg)
CSE328:Computer Graphics
OpenGL Tutorial
Dongli Zhang
Department of Computer Science, SBU
Department of Computer Science, Stony Brook University (SUNYSB)
![Page 2: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/2.jpg)
TA Information
Department of Computer Science, Stony Brook University (SUNYSB)
TA Schedule:•Time: Tuesday: 4:30~6:00pm;•Location: Computer Science Building, 2110;•Email: [email protected]
![Page 3: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/3.jpg)
Introduction to OpenGL
CSE328
What is OpenGL?• Industrial standard library for doing computer graphics.• Developed by Silicon Graphics Inc.(SGI) in 1992.• Latest version: 4.3 (released at Aug 6, 2012).
Features:•Keep developing. More functions,GLSL,64-bit support.•OpenGL is a Graphic rendering API (software interface to graphics hardware)
• consists of lots of commands. for example: GL_BEGIN(GLint TYPE)• Operating system independent.
References:•http://en.wikipedia.org/wiki/Opengl•http://www.opengl.org/
![Page 4: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/4.jpg)
Introduction to OpenGL
CSE328
• If you want to be a Software Engineer in Computer graphics area,OpenGL is a MUST!
• Giant Companies: NVidia, ATI(AMD),Google, Adobe, Pixar, Blizzard,Siemens Medical…
![Page 5: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/5.jpg)
Introduction to OpenGL
CSE328
Other 3D Graphics APIs:•Direct3D --- a competitor to OpenGL.•Mesa 3D --- an open source implementation of OpenGL.•Open Inventor --- C++ object oriented 3D graphics API in higher layer
of programming.•RISpec --- Pixar’s open API for photorealistic off-line rendering.
Other 2D graphics APIs:•GTK+.•Java 2D, QT
![Page 6: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/6.jpg)
OpenGL programming guide
CSE328
Things you should know before coding:1.OpenGL was designed be graphic output-only.
• Provide rendering functions only.• Core API has no concept of windowing systems, audio, printing to
screening, keyboard/mouse or other input devices.2.OpenGL need add-on APIs to interact with the host system.• GLX --- X11• WGL --- Microsoft Windows• CGL --- Mac OS X3.For convenient, people developed libraries to provide
functionality for basic windowing using OpenGL, such as GLUT.
OpenGL need a GUI in window system.OpenGL need a GUI in window system.
![Page 7: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/7.jpg)
OpenGL programming guide
• Tools for programming:– C/C++ compiler and debugger: MS, gcc.– IDE: MS Visual studio, Dev-C++, Eclipse+cdt, Xcode, …– GUI: GLUT + GLUI, QT, MFC…
• Recommendation:• VS2010 + GLUT + GLUI(QT)• Reasons: free, easy for debug.
![Page 8: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/8.jpg)
OpenGL language
• A state machine1. You put OpenGL into various states that then remain in effect until you change them
2. State is encapsulated in contexts. Each OpenGL window has its own, separate, state.
3. Think of each context as a C/C++ struct with fields for each OpenGL state variable.
• Generally, there are two operations that you do with OpenGL:1. Draw something
2. Change the state of how OpenGL draws
• OpenGL has two types of things that it can render:1. Geometric primitives: points, lines and polygons
2. Image Primitives: bitmaps and graphics image
• Additionally, OpenGL links images and geometric primitives together using Texture Mapping.
![Page 9: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/9.jpg)
OpenGL language
![Page 10: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/10.jpg)
OpenGL language
![Page 11: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/11.jpg)
OpenGL language
![Page 12: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/12.jpg)
OpenGL language
![Page 13: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/13.jpg)
OpenGL language
![Page 14: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/14.jpg)
OpenGL language
![Page 15: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/15.jpg)
OpenGL geometric primitives
![Page 16: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/16.jpg)
OpenGL geometric primitives
![Page 17: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/17.jpg)
OpenGL geometric primitives
![Page 18: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/18.jpg)
OpenGL geometric primitives
![Page 19: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/19.jpg)
OpenGL geometric primitives
![Page 20: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/20.jpg)
OpenGL geometric primitives
![Page 21: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/21.jpg)
OpenGL geometric primitives
![Page 22: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/22.jpg)
OpenGL geometric primitives
![Page 23: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/23.jpg)
OpenGL geometric primitives
![Page 24: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/24.jpg)
Rendering
![Page 25: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/25.jpg)
Rendering
![Page 26: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/26.jpg)
Controlling current state
![Page 27: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/27.jpg)
GLUT
![Page 28: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/28.jpg)
GLUT
What can GLUT do?What can GLUT do?
![Page 29: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/29.jpg)
GLUT programming
![Page 30: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/30.jpg)
Initialization
![Page 31: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/31.jpg)
Initialization
![Page 32: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/32.jpg)
Open a window
![Page 33: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/33.jpg)
Open a window
![Page 34: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/34.jpg)
Handle Events
![Page 35: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/35.jpg)
Handle Event
![Page 36: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/36.jpg)
Handle events
![Page 37: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/37.jpg)
GLUT
![Page 38: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/38.jpg)
GLUT
![Page 39: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/39.jpg)
GLUT
![Page 40: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/40.jpg)
GLUT
![Page 41: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/41.jpg)
GLUT
![Page 42: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/42.jpg)
![Page 43: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/43.jpg)
Enter event processing loop
![Page 44: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/44.jpg)
GLUT summary
![Page 45: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/45.jpg)
GLUT Menu
![Page 46: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/46.jpg)
GLUT Menu
![Page 47: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/47.jpg)
Put together
![Page 48: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/48.jpg)
![Page 49: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/49.jpg)
![Page 50: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/50.jpg)
GLUI
![Page 51: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/51.jpg)
GLUI
![Page 52: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/52.jpg)
Examples
![Page 53: CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU dozhang@cs.stonybrook.edu Department of Computer Science, Stony](https://reader036.vdocuments.net/reader036/viewer/2022062407/56649dcf5503460f94ac30ee/html5/thumbnails/53.jpg)
Helpful sources