Programming with OpenGL Part 1: Background

Similar documents
Early History of APIs. PHIGS and X. SGI and GL. Programming with OpenGL Part 1: Background. Objectives

Computer Graphics. Bing-Yu Chen National Taiwan University

Introduction to OpenGL Week 1

Objectives. Image Formation Revisited. Physical Approaches. The Programmer s Interface. Practical Approach. Introduction to OpenGL Week 1

API Background. Prof. George Wolberg Dept. of Computer Science City College of New York

Programming with OpenGL Part 1: Background

CIS 441/541: Introduction to Computer Graphics Lecture 14: OpenGL Basics

LECTURE 02 OPENGL API

CS450/550. Pipeline Architecture. Adapted From: Angel and Shreiner: Interactive Computer Graphics6E Addison-Wesley 2012

Lecture 2 CISC440/640 Spring Department of Computer and Information Science

Programming using OpenGL: A first Introduction

OPEN GL BACKGROUND. Objectives. Early History of APIs. SGI and GL. PHIGS and X. Modified from Angel 6e book slides

Drawing Primitives. OpenGL basics

OpenGL Introduction Computer Graphics and Visualization

Teacher Assistant : Tamir Grossinger Reception hours: by - Building 37 / office -102 Assignments: 4 programing using

VR-programming tools (procedural) More VRML later in this course! (declarative)

Graphics Programming

CS 4204 Computer Graphics

Models and Architectures. Angel and Shreiner: Interactive Computer Graphics 7E Addison-Wesley 2015

Introduction to OpenGL

OpenGL and GLUT. COMP413 Computer Graphics. School of Computer Sci. & Eng. Kyungpook National University, Korea. Spring Semester, 2016

GL_COLOR_BUFFER_BIT, GL_PROJECTION, GL_MODELVIEW

Announcements OpenGL. Computer Graphics. Autumn 2009 CS4815

CSC Graphics Programming. Budditha Hettige Department of Statistics and Computer Science

Computer Graphics, Chapt 08

Today s Agenda. Basic design of a graphics system. Introduction to OpenGL

Computer Graphics (CS 4731) OpenGL/GLUT(Part 1)

ERKELEY DAVIS IRVINE LOS ANGELES RIVERSIDE SAN DIEGO SAN FRANCISCO EECS 104. Fundamentals of Computer Graphics. OpenGL

Announcements OpenGL. Computer Graphics. Spring CS4815

OpenGL Basics I. Seoul National University Graphics & Media Lab

Lecture 2 5 Aug 2004

Lectures OpenGL Introduction

Computer Graphics. Chapter 3 Computer Graphics Software

Exercise 1 Introduction to OpenGL

CS 543 Lecture 1 (Part II): Intro to OpenGL and GLUT (Part I) Emmanuel Agu

Programming with WebGL Part 1: Background. CS 432 Interactive Computer Graphics Prof. David E. Breen Department of Computer Science

An Overview GLUT GLSL GLEW

Lecture 4 of 41. Lab 1a: OpenGL Basics

Abel J. P. Gomes LAB. 1. INTRODUCTION TO OpenGL

Programming with OpenGL Part 2: Complete Programs Computer Graphics I, Fall

Objectives. Programming with WebGL Part 1: Background. Retained vs. Immediate Mode Graphics. Early History of APIs. PHIGS and X.

CS 380 Introduction to Computer Graphics. LAB (1) : OpenGL Tutorial Reference : Foundations of 3D Computer Graphics, Steven J.

Draw the basic Geometry Objects. Hanyang University

CSE4030 Introduction to Computer Graphics

Comp 410/510 Computer Graphics Spring Programming with OpenGL Part 2: First Program

SOURCES AND URLS BIBLIOGRAPHY AND REFERENCES

20 Years of OpenGL. Kurt Akeley. Copyright Khronos Group, Page 1

GLUT. What is OpenGL? Introduction to OpenGL and GLUT

CSE528 Computer Graphics: Theory, Algorithms, and Applications

Computer Graphics. OpenGL

Models and Architectures. Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico

CS 543 Lecture 1 (Part 3) Prof Emmanuel Agu. Computer Science Dept. Worcester Polytechnic Institute (WPI)

Assignment 1. Simple Graphics program using OpenGL

To Do. Computer Graphics (Fall 2008) Course Outline. Course Outline. Methodology for Lecture. Demo: Surreal (HW 3)

Graphics Programming. August 31, Programming of the Sierpinski gasket. Programming with OpenGL and C/C++

Programming with OpenGL Part 3: Three Dimensions

CS Computer Graphics: Intro to OpenGL

CS Computer Graphics: Intro to OpenGL

Introduction to OpenGL. CSCI 4229/5229 Computer Graphics Fall 2012

Computer Graphics - Chapter 1 Graphics Systems and Models

COMP 371/4 Computer Graphics Week 1

OpenGL refresher. Advanced Computer Graphics 2012

Precept 2 Aleksey Boyko February 18, 2011

Introduction to MS Visual C/C++

Introduction to Computer Graphics with OpenGL/GLUT

Lecture 3. Understanding of OPenGL programming

3D computer graphics: geometric modeling of objects in the computer and rendering them

CMSC 425: Lecture 4 More about OpenGL and GLUT Tuesday, Feb 5, 2013

Introduction to Computer Graphics with WebGL

Computer Graphics (CS 543) Lecture 1 (Part 2): Introduction to OpenGL/GLUT (Part 1)

Cameras (and eye) Ideal Pinhole. Real Pinhole. Real + lens. Depth of field

CS 432 Interactive Computer Graphics

CGT521 Introduction to

Using OpenGL with CUDA

Ulf Assarsson Department of Computer Engineering Chalmers University of Technology

Graphics and Visualization

Information Coding / Computer Graphics, ISY, LiTH. OpenGL! ! where it fits!! what it contains!! how you work with it 11(40)

Basic Graphics Programming

Rendering. Part 1 An introduction to OpenGL

Graphics Pipeline & APIs

Introduction to Computer Graphics. Hardware Acceleration Review

Computer Graphics: Line Drawing Algorithms

CS452/552; EE465/505. Overview of Computer Graphics

Lecture 3. Programming with OpenGL GLUT + GLEW. CS 354 Computer Graphics Sunday, January 20, 13

to OpenGL Introduction Pipeline Graphics pipeline OpenGL pipeline OpenGL syntax Modeling Arrays Conclusion 1 Introduction Introduction to OpenGL

GLUT Tutorial. John Tsiombikas (Nuclear / The Lab Demos) May 6, Introduction to GLUT (OpenGL Utility Toolkit)

Computer Graphics 1 Computer Graphics 1

Graphics Pipeline & APIs

Overview of Graphics Systems Hearn & Baker Chapter 2. Some slides are taken from Robert Thomsons notes.

OpenGL/GLUT Intro. Week 1, Fri Jan 12

Computer Graphics (Basic OpenGL)

CS 450: COMPUTER GRAPHICS REVIEW: INTRODUCTION TO COMPUTER GRAPHICS SPRING 2016 DR. MICHAEL J. REALE

RECITATION - 1. Ceng477 Fall

Lecture 2 2D transformations Introduction to OpenGL

Computer graphics MN1

1.2 Basic Graphics Programming

Basic Graphics Programming

CS 4731 Lecture 3: Introduction to OpenGL and GLUT: Part II. Emmanuel Agu

Computer Graphics Course 2005

(21) OpenGL GUI. OpenGL GUI 1 UNIX MAGAZINE UNIX. SGI (Silicon Graphics Inc.) Windows PC GUI. UNIX Windows GUI. Java. 1 prefposition() X X

Transcription:

Programming with OpenGL Part 1: Background Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico 1

Objectives Development of the OpenGL API OpenGL Architecture - OpenGL as a state machine Functions - Types - Formats Simple program 2

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 3

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) 4

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 5

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 6

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 7

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 8

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 9

Software Organization application program OpenGL Motif widget or similar GLX, AGL or WGL X, Win32, Mac O/S GLUT GLU GL software and/or hardware 10

OpenGL Architecture Immediate Mode geometry pipeline Polynomial Evaluator Per Vertex Operations & Primitive Assembly CPU Display List Rasterization Per Fragment Operations Frame Buffer Pixel Operations Texture Memory 11

Primitives - Points - Line Segments - Polygons Attributes Transformations - Viewing - Modeling Control (GLUT) Input (GLUT) Query OpenGL Functions 12

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 13

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 14

OpenGL function format function name dimensions glvertex3f(x,y,z) belongs to GL library x,y,z are floats glvertex3fv(p) p is a pointer to an array 15

OpenGL #defines Most constants are defined in the include files gl.h, glu.h and glut.h - Note #include <GL/glut.h> should automatically include the others - Examples -glbegin(gl_polygon) -glclear(gl_color_buffer_bit) include files also define OpenGL data types: GLfloat, GLdouble,. 16

A Simple Program Generate a square on a solid background 17

simple.c #include <GL/glut.h> 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(); } 18

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 19

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 20

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 21

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 22