CSC 461: Lecture 41 CSC461: Lecture 4 Introduction to OpenGL Objectives: Development of the OpenGL API OpenGL Architecture -- OpenGL as a state machine.

Slides:



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

©Zachary Wartell, UNCC9/28/ :30 AM 1 Overview of OpenGL Revision: 1.2 Copyright Professor Zachary Wartell, University of North Carolina All Rights.
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.
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Programming with OpenGL Part 1: Background Ed Angel Professor of Computer Science, Electrical.
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.
CMPE 466 COMPUTER GRAPHICS
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
CAP4730: Computational Structures in Computer Graphics Introduction to OpenGL.
CS 480/680 Computer Graphics Course Overview Dr. Frederick C Harris, Jr. Fall 2012.
CHAPTER 4 Window Creation and Control © 2008 Cengage Learning EMEA.
C O M P U T E R G R A P H I C S Jie chen Computer graphic -- OpenGL Howto.
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.
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.
Computer Graphics Tz-Huan Huang National Taiwan University.
OpenGl Graphics Programming. Introduction OpenGL is a low-level graphics library specification. It makes available to the programmer a small set of geomteric.
The Graphics Rendering Pipeline 3D SCENE Collection of 3D primitives IMAGE Array of pixels Primitives: Basic geometric structures (points, lines, triangles,
2 COEN Computer Graphics I Introductions n Brad Grantham lecturer lab dude n Dave Shreiner lecturer slave driver.
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.
CS 450: COMPUTER GRAPHICS INSTALLING GLUT AND GLEW SPRING 2015 DR. MICHAEL J. REALE.
CSC 461: Lecture 3 1 CSC461 Lecture 3: Models and Architectures  Objectives –Learn the basic design of a graphics system –Introduce pipeline architecture.
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Programming with OpenGL Part 1: Background Ed Angel Professor of Computer Science, Electrical.
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,
CS 4363/6353 OPENGL BACKGROUND. WHY IS THIS CLASS SO HARD TO TEACH? (I’LL STOP WHINING SOON) Hardware (GPUs) double in processing power ever 6 months!
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.
1Computer Graphics Lecture 4 - Models and Architectures John Shearer Culture Lab – space 2
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.
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.
CS 470 Computer Graphic Getting Started with OpenGL.
NoufNaief.net TA: Nouf Al-harbi.
CGGM Lab. Tan-Chi Ho Introduction to OpenGL.
Computer Graphics Lab 1 OpenGL.
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.
Chapter 1 Graphics Systems and Models Models and Architectures.
1 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Models and Architectures 靜宜大學 資訊工程系 蔡奇偉 副教授 2012.
Computer Graphics (Fall 2003) COMS 4160, Lecture 5: OpenGL 1 Ravi Ramamoorthi Many slides courtesy Greg Humphreys.
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
Computer Graphics Lecture 32
Programming with OpenGL Part 1: Background
Models and Architectures
Introduction to Computer Graphics with WebGL
Models and Architectures
Models and Architectures
Introduction to Computer Graphics with WebGL
Programming with OpenGL Part 1: Background
Models and Architectures
Models and Architectures
Programming with OpenGL Part 1: Background
Programming with OpenGL Part 1: Background
OpenGL Background CS 4722.
Presentation transcript:

CSC 461: Lecture 41 CSC461: Lecture 4 Introduction to OpenGL Objectives: Development of the OpenGL API OpenGL Architecture -- OpenGL as a state machine Functions – Types and Formats Compilation

CSC 461: Lecture 42 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

CSC 461: Lecture 43 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)

CSC 461: Lecture 44 SGI and GL Silicon Graphics (SGI) revolutionized the graphics workstation by implementing the pipeline in hardware (1982) To use the system, application programmers used a library called GL With GL, it was relatively simple to program three dimensional interactive applications

CSC 461: Lecture 45 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

CSC 461: Lecture 46 OpenGL Evolution Controlled by an Architectural Review Board (ARB) –Members include SGI, Microsoft, Nvidia, HP, 3DLabs,IBM,……. –Relatively stable (present version 1.4) Evolution reflects new hardware capabilities –3D texture mapping and texture objects –Vertex programs –Allows for platform specific features through extensions

CSC 461: Lecture 47 OpenGL Libraries OpenGL core library –OpenGL32 on Windows –GL on most unix/linux systems 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 Widows –AGL for Macintosh

CSC 461: Lecture 48 GLUT OpenGL Utility Toolkit (GLUT) –Provides functionality common to all window systems Open a window Get input from mouse and keyboard MenusEvent-driven –Code is portable but GLUT lacks the functionality of a good toolkit for a specific platform Slide bars

CSC 461: Lecture 49 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

CSC 461: Lecture 410 OpenGL Architecture Immediate Mode Display List Polynomial Evaluator Per Vertex Operations & Primitive Assembly Rasterization Per Fragment Operations Texture Memory CPU Pixel Operations Frame Buffer Geometric pipeline

CSC 461: Lecture 411 Programmer’s View Three components –Specify a set of objects to render –Describe properties of these objects –Define how these objects should be viewed

CSC 461: Lecture 412 OpenGL Functions Primitives –Points –Line Segments –Polygons AttributesTransformations –Viewing –Modeling -- Windowing Control Input (GLUT)

CSC 461: Lecture 413 OpenGL State OpenGL is a state machine Application Program OpenGL Display Function calls Pixels OpenGL Pipeline application program display

CSC 461: Lecture 414 OpenGL Function Types OpenGL functions are of two types –Primitive generating Can cause output if primitive is visible How vertices are processes and appearance of primitive are controlled by the state –State changing Transformation functions Attribute functions –Colors, viewing conditions, material properties, lighting, shading, etc.

CSC 461: Lecture 415 Lack of Object Orientation OpenGL is not object oriented so that there are multiple functions for a given logical function, e.g. –glVertex3f, –glVertex2i, –glVertex3dv,….. Underlying storage mode is the same Easy to create overloaded functions in C++ but issue is efficiency

CSC 461: Lecture 416 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

CSC 461: Lecture 417 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_PLOYGON)glClear(GL_COLOR_BUFFER_BIT) include files also define OpenGL data types: Glfloat, Gldouble,….

CSC 461: Lecture 418 Notes on compilation 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 See website and ftp for your computer

CSC 461: Lecture 419 Compiler Example –Unix cc myapp.c –o myapp –lglut –lglu –lgl –lX11 -lm –Linux cc myapp.c –o myapp –lglut –lglu –lgl –l/usr/X11R6/lib -lm

CSC 461: Lecture 420 Compilation on Windows Visual C++ –Get glut.h, glut32.lib and glut32.dll from web in the system folder –Create a console application –Add opengl32.lib, glut32.lib to project settings (under link tab) –Lib files should be..\VC\lib –Include files should be..\VC\include\GL Borland C similar Cygwin (linux under Windows) –Can use gcc and similar makefile to linux –Use –lopengl32 –lglu32 –lglut32 flags