1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Programming with OpenGL Part 1: Background Ed Angel Professor of Computer Science, Electrical.

Slides:



Advertisements
Similar presentations
Programming with OpenGL - Getting started - Hanyang University Han Jae-Hyek.
Advertisements

Chapter 2: Graphics Programming
Pemrograman OpenGL Dasar
 The success of GL lead to OpenGL (1992), a platform-independent API that was  Easy to use  Close enough to the hardware to get excellent performance.
Chapter 2 Using OpenGL Chih-Kuo Yeh.  Addison Wesley OpenGL SuperBible 4 th Edition Jun 2007 Author: Richard S. Wright, Jr. Benjamin Lipchak Nicholas.
6/10/2015 3:41:00 AM 1 CSE 307 COMPUTER GRAPHICS  OVERVIEW OF GRAPHICS SYSTEMS  GRAPHICS OUTPUT PRIMITIVES  GEOMETRICAL TRANSFORMATIONS  TWO DIMENSIONAL.
CSC 461: Lecture 51 CSC461 Lecture 5: Simple OpenGL Program Objectives: Discuss a simple program Discuss a simple program Introduce the OpenGL program.
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Programming with OpenGL Part 2: Complete Programs Ed Angel Professor of Computer Science,
30/1/2006Based on: Angel (4th Edition) & Akeine-Möller & Haines (2nd Edition)1 CSC345: Advanced Graphics & Virtual Environments Lecture 1: Introduction.
Programming with OpenGL Part 0: 3D API March 1, 2007.
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 What is Computer Graphics? Ed Angel Professor of Computer Science, Electrical and Computer.
Programming with OpenGL Part 1: Background Mohan Sridharan Based on slides created by Edward Angel CS4395: Computer Graphics 1.
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Models and Architectures Ed Angel Professor of Computer Science, Electrical and Computer.
Computer Graphics Bing-Yu Chen National Taiwan University.
Lecture 5 - Programming with OpenGL
Introduction to OpenGL and GLUT GLUT. What is OpenGL? An application programming interface (API) A (low-level) Graphics rendering API Generate high-quality.
Using OpenGL in Visual C++ Opengl32.dll and glu32.dll should be in the system folder Opengl32.dll and glu32.dll should be in the system folder Opengl32.lib.
Demetriou/Loizidou – ACSC330 – Chapter 2 Graphics Programming Dr. Giorgos A. Demetriou Dr. Stephania Loizidou Himona Computer Science Frederick Institute.
CSC 461: Lecture 41 CSC461: Lecture 4 Introduction to OpenGL Objectives: Development of the OpenGL API OpenGL Architecture -- OpenGL as a state machine.
Graphics Architectures & OpenGL API Introduction Angel Angel: Interactive Computer Graphics5E © Addison-Wesley
CS 480/680 Computer Graphics Programming with Open GL Part 1: Background Dr. Frederick C Harris, Jr. Fall 2011.
OpenGl Graphics Programming. Introduction OpenGL is a low-level graphics library specification. It makes available to the programmer a small set of geomteric.
Programming with OpenGL Part 1: Background
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Programming with OpenGL Part 1: Background Ed Angel Professor of Computer Science, Electrical.
Graphics Systems and OpenGL. Business of Generating Images Images are made up of pixels.
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Programming with OpenGL Part 1: Background Ed Angel Professor of Computer Science, Electrical.
Hank Childs, University of Oregon Oct. 31st, 2014 CIS 441/541: Introduction to Computer Graphics Lecture 10: Textures.
Scientific Visualization with OpenGL 22 February 2006.
1. OpenGL/GLU/GLUT  OpenGL v4.0 (latest) is the “core” library that is platform independent  GLUT v3.7 is an auxiliary library that handles window creation,
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
Introduction to OpenGL Programming Jian-Liang Lin 2002.
Introduction to OpenGL Week 1 David Breen Department of Computer Science Drexel University Based on material from Ed Angel, University of New Mexico CS.
1 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Programming with OpenGL Part 1: Background Ed Angel Professor Emeritus.
1 Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009 Programming with OpenGL Review.
1 Chapter 2: Graphics Programming Bryson Payne CSCI 3600 NGCSU.
Introduction to OpenGL and GLUT. What’s OpenGL? An Application Programming Interface (API) A low-level graphics programming API – Contains over 250 functions.
C O M P U T E R G R A P H I C S Guoying Zhao 1 / 43 C O M P U T E R G R A P H I C S Guoying Zhao 1 / 43 Computer Graphics Programming with OpenGL I.
Pemrograman OpenGL Dasar Pertemuan 5 Hand out Komputer Grafik.
NoufNaief.net TA: Nouf Al-harbi.
CGGM Lab. Tan-Chi Ho Introduction to OpenGL.
1 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Programming with OpenGL Part 2: Complete Programs Ed Angel Professor.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
1 Angel: Interactive Computer Graphics5E © Addison- Wesley 2009 Image Formation Fundamental imaging notions Fundamental imaging notions Physical basis.
Introduction to OpenGL Programming
OpenGL API 2D Graphic Primitives Angel Angel: Interactive Computer Graphics5E © Addison-Wesley
Computer Graphics I, Fall Programming with OpenGL Part 2: Complete Programs.
INTRODUCTION TO OPENGL
Computer Graphics (Fall 2003) COMS 4160, Lecture 5: OpenGL 1 Ravi Ramamoorthi Many slides courtesy Greg Humphreys.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
Computer Graphics -practical- Lecture 6. (visual c++) open gl library To use open GL with VC++ we add these files:- 1)Glut.h C:\program files\ Microsoft.
Hank Childs, University of Oregon Oct. 28th, 2016 CIS 441/541: Introduction to Computer Graphics Lecture 16: textures.
Hank Childs, University of Oregon Oct. 26th, 2016 CIS 441/541: Introduction to Computer Graphics Lecture 14: OpenGL Basics.
Programming with OpenGL Part 1: Background
Programming with OpenGL Part 1: Background
CIS 441/541: Introduction to Computer Graphics Lecture 15: More OpenGL
Programming with OpenGL Part 2: Complete Programs
Programming with OpenGL Part 1: Background
OpenGL API 2D Graphic Primitives
Programming with OpenGL Part 2: Complete Programs
Introduction to Computer Graphics with WebGL
Models and Architectures
Introduction to Computer Graphics with WebGL
Programming with OpenGL Part 1: Background
Introduction to Computer Graphics with WebGL
Introduction to OpenGL
Programming with OpenGL Part 2: Complete Programs
Programming with OpenGL Part 1: Background
Programming with OpenGL Part 2: Complete Programs
Programming with OpenGL Part 1: Background
Programming with OpenGL Part 2: Complete Programs
Presentation transcript:

1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Programming with OpenGL Part 1: Background Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico

2 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Objectives Development of the OpenGL API OpenGL Architecture ­OpenGL as a state machine Functions ­Types ­Formats Simple program

3 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Early History of APIs IFIPS (1973) formed two committees to come up with a standard graphics API ­Graphical Kernel System (GKS) 2D but contained good workstation model ­Core Both 2D and 3D ­GKS adopted as IS0 and later ANSI standard (1980s) GKS not easily extended to 3D (GKS-3D) ­Far behind hardware development

4 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 PHIGS and X Programmers Hierarchical Graphics System (PHIGS) ­Arose from CAD community ­Database model with retained graphics (structures) X Window System ­DEC/MIT effort ­Client-server architecture with graphics PEX combined the two ­Not easy to use (all the defects of each)

5 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 SGI and GL Silicon Graphics (SGI) revolutionized the graphics workstation by implementing the pipeline in hardware (1982) To access the system, application programmers used a library called GL With GL, it was relatively simple to program three dimensional interactive applications

6 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 OpenGL The success of GL lead to OpenGL (1992), a platform-independent API that was ­Easy to use ­Close enough to the hardware to get excellent performance ­Focus on rendering ­Omitted windowing and input to avoid window system dependencies

7 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 OpenGL Evolution Controlled by an Architectural Review Board (ARB) ­Members include SGI, Microsoft, Nvidia, HP, 3DLabs, IBM,……. ­Relatively stable (present version 2.0) Evolution reflects new hardware capabilities –3D texture mapping and texture objects –Vertex programs ­Allows for platform specific features through extensions

8 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 OpenGL Libraries OpenGL core library ­OpenGL32 on Windows ­GL on most unix/linux systems (libGL.a) OpenGL Utility Library (GLU) ­Provides functionality in OpenGL core but avoids having to rewrite code Links with window system ­GLX for X window systems ­WGL for Windows ­AGL for Macintosh

9 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 GLUT OpenGL Utility Toolkit (GLUT) ­Provides functionality common to all window systems Open a window Get input from mouse and keyboard Menus Event-driven ­Code is portable but GLUT lacks the functionality of a good toolkit for a specific platform No slide bars

10 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Software Organization GLUT GLU GL GLX, AGL or WGL X, Win32, Mac O/S software and/or hardware application program OpenGL Motif widget or similar

11 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 OpenGL Architecture Immediate Mode Display List Polynomial Evaluator Per Vertex Operations & Primitive Assembly Rasterization Per Fragment Operations Texture Memor y CPU Pixel Operations Frame Buffer geometry pipeline

12 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 OpenGL Functions Primitives ­Points ­Line Segments ­Polygons Attributes Transformations ­Viewing ­Modeling Control (GLUT) Input (GLUT) Query

13 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 OpenGL State OpenGL is a state machine OpenGL functions are of two types ­Primitive generating Can cause output if primitive is visible How vertices are processed and appearance of primitive are controlled by the state ­State changing Transformation functions Attribute functions

14 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Lack of Object Orientation OpenGL is not object oriented so that there are multiple functions for a given logical function ­glVertex3f ­glVertex2i ­glVertex3dv Underlying storage mode is the same Easy to create overloaded functions in C++ but issue is efficiency

15 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 OpenGL function format glVertex3f(x,y,z) belongs to GL library function name x,y,z are floats glVertex3fv(p) p is a pointer to an array dimensions

16 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 OpenGL #defines Most constants are defined in the include files gl.h, glu.h and glut.h ­Note #include should automatically include the others ­Examples ­glBegin(GL_POLYGON) ­glClear(GL_COLOR_BUFFER_BIT) include files also define OpenGL data types: GLfloat, GLdouble,….

17 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 A Simple Program Generate a square on a solid background

18 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 simple.c #include void mydisplay(){ glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POLYGON); glVertex2f(-0.5, -0.5); glVertex2f(-0.5, 0.5); glVertex2f(0.5, 0.5); glVertex2f(0.5, -0.5); glEnd(); glFlush(); } int main(int argc, char** argv){ glutCreateWindow("simple"); glutDisplayFunc(mydisplay); glutMainLoop(); }

19 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Event Loop Note that the program defines a display callback function named mydisplay ­Every glut program must have a display callback ­The display callback is executed whenever OpenGL decides the display must be refreshed, for example when the window is opened ­The main function ends with the program entering an event loop

20 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Defaults simple.c is too simple Makes heavy use of state variable default values for ­Viewing ­Colors ­Window parameters Next version will make the defaults more explicit

21 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Notes on compilation See website and ftp for examples Unix/linux ­Include files usually in …/include/GL ­Compile with –lglut –lglu –lgl loader flags ­May have to add –L flag for X libraries ­Mesa implementation included with most linux distributions ­Check web for latest versions of Mesa and glut

22 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Compilation on Windows Visual C++ ­Get glut.h, glut32.lib and glut32.dll from web ­Create a console application ­Add opengl32.lib, glut32.lib, glut32.lib to project settings (under link tab) Borland C similar Cygwin (linux under Windows) ­Can use gcc and similar makefile to linux ­Use –lopengl32 –lglu32 –lglut32 flags