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,

Slides:



Advertisements
Similar presentations
Chapter 2: Graphics Programming
Advertisements

Pemrograman OpenGL Dasar
OpenGL (Graphics Library) Software Interface to graphics software Allows to create interactive programs that produce color images of moving 3D objects.
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,
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.
Programming with OpenGL Part 1: Background Mohan Sridharan Based on slides created by Edward Angel CS4395: Computer Graphics 1.
CSC 461: Lecture 6 1 CSC461 Lecture 6: 2D Programming in OpenGL Objectives:  Fundamental OpenGL primitives  Attributes  Viewport.
Computer Graphics Bing-Yu Chen National Taiwan University.
Lecture 5 - Programming with OpenGL
CAP4730: Computational Structures in Computer Graphics Introduction to OpenGL.
Using OpenGL. 2 What is OpenGL? A software interface to graphics hardware It is a Graphics Rendering API (Application Programmer’s Interface) that is.
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
Programming with OpenGL Part 1: Background
CSE 470: Computer Graphics. 10/15/ Defining a Vertex A 2D vertex: glVertex2f(GLfloat x, GLfloat y); 2D vertexfloating pointopenGL parameter type.
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Programming with OpenGL Part 1: Background Ed Angel Professor of Computer Science, Electrical.
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Programming with OpenGL Part 1: Background Ed Angel Professor of Computer Science, Electrical.
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.
Computer Graphics Bing-Yu Chen National Taiwan University.
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.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
Color and Color Models Angel 2.5 Angel: Interactive Computer Graphics5E © Addison-Wesley
Chun-Yuan Lin Introduction to OpenGL 2015/12/19 1 CG.
Pemrograman OpenGL Dasar Pertemuan 5 Hand out Komputer Grafik.
NoufNaief.net TA: Nouf Al-harbi.
1 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Programming with OpenGL Part 2: Complete Programs Ed Angel Professor.
Programming with OpenGL Part 2: Complete Programs Ed Angel Professor of Emeritus of Computer Science University of New Mexico.
Programming with OpenGL Part 2: Complete Programs Ed Angel Professor of Emeritus of Computer Science University of New Mexico.
Lecture 2 Review OpenGL Libraries Graphics Overview Rendering Pipeline OpenGL command structure.
1 Programming with OpenGL Part 2: Complete Programs.
OpenGL API 2D Graphic Primitives Angel Angel: Interactive Computer Graphics5E © Addison-Wesley
1 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Programming with OpenGL Part 4: Color and Attributes Isaac Gang University.
31/1/2006Based on: Angel (4th Edition) & Akeine-Möller & Haines (2nd Edition)1 CSC345: Advanced Graphics & Virtual Environments Lecture 2: Introduction.
CIS 681 Review: OpenGL. CIS 681 Command Syntax OpenGL commands start with a gl. This is followed by the base command such as Color. Followed by the number.
Introduction to Graphics Programming. Graphics API.
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.
CS 480/680 Computer Graphics Programming with Open GL Part 2: Complete Programs Dr. Frederick C Harris, Jr. Fall 2011.
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Administrivia Back on track: canceling OpenGL lecture 2 Assignment 1
CSC Graphics Programming
The Human Visual System vs The Pinhole camera
Programming with OpenGL Part 1: Background
Programming with OpenGL Part 1: Background
Programming with OpenGL Part 2: Complete Programs
Programming with OpenGL Part 1: Background
Materi Anatomi OpenGL Fungsi GLUT Posisi Kamera Proyeksi
OpenGL API 2D Graphic Primitives
Programming with OpenGL Part 2: Complete Programs
Introduction to Computer Graphics with WebGL
Programming with OpenGL Part 4: Color and Attributes
Programming with OpenGL Part 1: Background
Drawing in the plane 455.
Introduction to OpenGL
Programming with OpenGL Part 2: Complete Programs
Programming with OpenGL Part 2: Complete Programs
Programming with OpenGL Part 2: Complete Programs
Programming with OpenGL Part 1: Background
Programming with OpenGL Part 4: Color and Attributes
Programming with OpenGL Part 2: Complete Programs
Programming with OpenGL Part 2: Complete Programs
Presentation transcript:

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, OS system calls (mouse buttons, movement, keyboard, etc), callbacks.  GLU is an auxiliary library that handles a variety of graphics accessory functions

Headers and Libraries  OpenGL - main stuff (the only thing that is required)  #include  Link opengl32.lib (PC)  opengl.lib is an SGI implementation  opengl32.lib is a Microsoft implementation (what you want)  GLU - auxillary functions  #include  Link glu32.lib (PC)

Headers and Libraries  GLUT - Window management (requires download of library)  #include  Link glut32.lib (PC), or -lglut (UNIX)  Instead of GLUT, you can use GLX or WGL

Program Structure  Most OpenGL programs have a similar structure that consists of the following functions  main() :  defines the callback functions  opens one or more windows with the required properties  enters event loop (last executable statement)  init() : sets the state variables  Viewing  Attributes  callbacks  Display function  Input and window functions Angel: Interactive Computer Graphics 5E © Addison-Wesley

simple.c revisited (in book)  In this version, we shall see the same output but we have defined all the relevant state values through function calls using the default values  In particular, we set  Colors  Viewing conditions  Window properties Angel: Interactive Computer Graphics 5E © Addison-Wesley

init.c void init() { glClearColor (0.0, 0.0, 0.0, 1.0); glColor3f(1.0, 1.0, 1.0); glMatrixMode (GL_PROJECTION); glLoadIdentity (); glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); } Angel: Interactive Computer Graphics 5E © Addison-Wesley black clear color fill/draw with white viewing volume

Coordinate Systems  The units in glVertex are determined by the application and are called object or problem coordinates  The viewing specifications are also in object coordinates and it is the size of the viewing volume that determines what will appear in the image  Internally, OpenGL will convert to camera (eye) coordinates and later to screen coordinates Angel: Interactive Computer Graphics 5E © Addison-Wesley

OpenGL Camera  OpenGL places a camera at the origin in object space pointing in the negative z direction  The default viewing volume is a box centered at the origin with a side of length 2 Angel: Interactive Computer Graphics 5E © Addison-Wesley

Orthographic Viewing Angel: Interactive Computer Graphics 5E © Addison-Wesley z=0 In the default orthographic view, points are projected forward along the z axis onto the plane z=0

Transformations and Viewing  In OpenGL, projection is carried out by a projection matrix (transformation)  There is only one set of transformation functions so we must set the matrix mode first glMatrixMode (GL_PROJECTION)  Transformation functions are incremental so we start with an identity matrix and alter it with a projection matrix that gives the view volume glLoadIdentity(); glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); Angel: Interactive Computer Graphics 5E © Addison-Wesley

Two- and three-dimensional viewing  In glOrtho(left, right, bottom, top, near, far) the near and far distances are measured from the camera  Two-dimensional vertex commands place all vertices in the plane z=0  If the application is in two dimensions, we can use the function gluOrtho2D(left, right,bottom,top)  In two dimensions, the view or clipping volume becomes a clipping window Angel: Interactive Computer Graphics 5E © Addison-Wesley

mydisplay.c 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(); } Angel: Interactive Computer Graphics 5E © Addison-Wesley

OpenGL Primitives Angel: Interactive Computer Graphics 5E © Addison-Wesley GL_QUAD_STRIP GL_POLYGON GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_POINTS GL_LINES GL_LINE_LOOP GL_LINE_STRIP GL_TRIANGLES

Polygon Issues  OpenGL will only display polygons correctly that are  Simple: edges cannot cross  Convex: All points on line segment between two points in a polygon are also in the polygon  Flat: all vertices are in the same plane  User program can check if above true  OpenGL will produce output if these conditions are violated but it may not be what is desired  Triangles satisfy all conditions Angel: Interactive Computer Graphics 5E © Addison-Wesley nonsimple polygon nonconvex polygon

Attributes  Attributes are part of the OpenGL state and determine the appearance of objects  Color (points, lines, polygons)  Size and width (points, lines)  Stipple pattern (lines, polygons)  Polygon mode  Display as filled: solid color or stipple pattern  Display edges  Display vertices Angel: Interactive Computer Graphics 5E © Addison-Wesley

RGB color  Each color component is stored separately in the frame buffer (the buffer that you draw into)  Usually 8 bits per component in buffer  Note in glColor3f the color values range from 0.0 (none) to 1.0 (all), whereas in glColor3ub the values range from 0 to 255 Angel: Interactive Computer Graphics 5E © Addison-Wesley

Color and State  The color as set by glColor becomes part of the state and will be used until changed  Colors and other attributes are not part of the object but are assigned when the object is rendered  We can create conceptual vertex colors by code such as glColor glVertex glColor glVertex Angel: Interactive Computer Graphics 5E © Addison-Wesley

Smooth Color  Default is smooth shading  OpenGL interpolates vertex colors across visible polygons  Alternative is flat shading  Color of first vertex determines fill color  glShadeModel (GL_SMOOTH) or GL_FLAT Angel: Interactive Computer Graphics 5E © Addison-Wesley

Viewports  Do not have use the entire window for the image: glViewport(x,y,w,h)  Values in pixels (screen coordinates) Angel: Interactive Computer Graphics 5E © Addison-Wesley

Basic GL Commands  glEnable/glDisable  GL has many states of operation, and the way you change them is through Enabling and Disabling them.  Ex.  glEnable(GL_DEPTH_TEST);  glDisable(GL_DEPTH_TEST);

Geometry Commands  glBegin  glVertex  glColor  glNormal  glTexCoord  glEnd

OpenGL State Machine  Several global variables, e.g.:  GL_DEPTH_TEST  GL_LIGHTING  Normal (i.e., glNormal )  Shading model (e.g.,GL_FLAT)  Color (i.e., glColor)  …  They are the current values till changed

State Examples glBegin(GL_TRIANGLES); glColor4f(1.0, 1.0, 1.0, 1.0); glVertex3f(0.0, 0.0, 0.0); glVertex3f(0.0, 1.0, 0.0); glColor4f(1.0, 0.0, 0.0, 1.0); glVertex3f(0.0, 0.0, 1.0); glEnd();

25 Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009 Compilation on Windows  Visual Studio  Get glut.h, glu32.lib and glut32.dll from web  Create a console application  Add opengl32.lib, glu32.lib, glut32.lib to project properties under Linker->Input->Additional Dependencies  If using Visual Studio Express  You may need to download and install opengl32.lib and the other libraries

26 Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009 Compilation on Linux  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