SlideShare a Scribd company logo
CSC 307 1.0
Graphics Programming
Budditha Hettige
Department of Statistics and Computer Science
Graphics Programming
OpenGL & GLUT in Code::Blocks
2Budditha Hettige
OpenGL & Code::block
• Download Code::Blocks
– http://www.sci.brooklyn.cuny.edu/~goetz/codeblocks/
• Download the GLUT bin file from
– http://www.xmission.com/~nate/glut.html
• Save files as
– Copy glut32.dll to
• C:windowssystem
– Copy glut32.lib to
• C:Program FilesCodeBlocksMinGWlib,
– Copy glut.h to
• C:Program FilesCodeBlocksMinGWincludeGL.
3Budditha Hettige
Code::Bolock Project
1. Start Code::Blocks and make a new project.
2. Select to make a new GLUT project and press Go to
continue.
3. Press Next at this menu
4
2 3
Budditha Hettige
Code::Bolock Project
4. Give a project title, and a location where to create
the project and then press Next
5. Tell Code::Blocks to where you stored your GL files,
then press Next
5
4 5
Budditha Hettige
Code::Bolock Project
• Set compiler as “GNU GCC Compiler”, and press
Finish.
• Open up the sample source file by double clicking on it
• Add #include <windows.h> at line 14
6Budditha Hettige
Code::Bolock Project
• Compile and build an application
7Budditha Hettige
Sample 01
# include <windows.h>
#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)
{
glutInit(&argc,argv);
glutCreateWindow("simple");
glutDisplayFunc(mydisplay);
glutMainLoop();
}
8Budditha Hettige
GLUT Functions
glutInit(int *argc, char** argv);
Initializes a window session.
glutCreateWindow(char *name);
Creates a window with title *name.
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
Sets the display mode to single buffered and RGB color.
glutInitWindowSize (GLsizei h, GLsizei w);
Sets initial window size to h x w.
glutInitWindowPosition(x,y);
Sets initial window position to (x, y).
9Budditha Hettige
GLUT Functions
• void glFlush()
force execution of GL commands in finite time
• void glutDisplayFunc(void (*func)(void));
sets the display callback for the current window.
• void glutMainLoop(void);
Enters the GLUT event processing loop
10Budditha Hettige
OpenGL Attributes
• glClearColor(1.0, 1.0, 1.0, 0.0);
– Sets background color to white
– Fourth argument is transparency; 0.0 is opaque
– Sets a state variable
• glPointSize(2.0);
– Sets point size to be 2 pixels wide
– Note that this is not a device-independent
attribute
– Sets a state variable
11Budditha Hettige
glClear
• Clearing the Color Buffer
– glClear(GL_COLOR_BUFFER_BIT);
• Values
– GL_COLOR_BUFFER_BIT
Indicates the buffers currently enabled for color
writing.
– GL_DEPTH_BUFFER_BIT
Indicates the depth buffer.
– GL_ACCUM_BUFFER_BIT
Indicates the accumulation buffer.
– GL_STENCIL_BUFFER_BIT
Indicates the stencil buffer.
12Budditha Hettige
13
OpenGL Geometric Primitives
GL_QUAD_STRIP
GL_POLYGON
GL_TRIANGLE_STRIP
GL_TRIANGLE_FAN
GL_POINTS
GL_LINES
GL_LINE_LOOPGL_LINE_STRIP
GL_TRIANGLES
GL_QUADS
Budditha Hettige
OpenGL Primitive Syntax
glBegin ( type );
glVertex* ( );
.
.
.
.
glVertex* ( );
glEnd ( );
14
glBegin(GL_POLYGON);
glVertex2f(-0.5, -0.5);
glVertex2f(-0.5, 0.5);
glVertex2f(0.5, 0.5);
glVertex2f(0.5, -0.5);
glEnd();
glBegin(GL_TRIANGLES);
glVertex3f( 0.0f, 1.0f, -10.0f);
glVertex3f(-1.0f,-1.0f, -10.0f);
glVertex3f( 1.0f,-1.0f, -10.0f);
glEnd();
glBegin(GL_LINES);
glVertex3f(0.25, 0.25, 0.0);
glVertex3f(0.75, 0.75, 0.0);
glEnd();
Budditha Hettige
Sample 02
# include <windows.h>
# include <GL/glut.h>
void display(void)
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 0.0, 0.0); //red
glBegin(GL_QUADS);
glVertex3f (0.25, 0.25, 0.0);
glVertex3f (0.75, 0.25, 0.0);
glColor3f (0.0, 0.0, 1.0); //blue
glVertex3f (0.75, 0.75, 0.0);
glVertex3f (0.25, 0.75, 0.0);
glEnd();
glutSolidSphere(0.15,12,2); //draw a sphere
glFlush ();
}
15
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE |
GLUT_RGB);
glutInitWindowSize (250, 250);
glutInitWindowPosition (100, 100);
glutCreateWindow ("hello");
init ();
glutDisplayFunc(display);
glutMainLoop();
}
Budditha Hettige
Sample 02
void init (void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
}
16Budditha Hettige
glutInitDisplayMode
• Sets the initial display mode.
– glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
• Values
– GLUT_RGBA
– GLUT_RGB
– GLUT_INDEX
– GLUT_SINGLE
– GLUT_DOUBLE
– GLUT_ACCUM
– GLUT_ALPHA
– GLUT_DEPTH
– GLUT_STENCIL
– GLUT_MULTISAMPLE
– GLUT_STEREO
– GLUT_LUMINANCE
17Budditha Hettige
glColor
• Set the current color
– glColor3f (1.0, 0.0, 0.0);
• Example
– void glColor3i(GLint red, GLint green, GLint blue);
– void glColor3f(GLfloat red, GLfloat green, GLfloat blue);
– glColor3f (1.0, 0.0, 0.0); //red
– glColor3f (0.0, 0.0, 1.0); //blue
18Budditha Hettige
Budditha Hettige 19
OpenGL Transformations
• Before applying modeling or viewing transformations,
need to set
glMatrixMode(GL_MODELVIEW)
• Before applying projection transformations, need to set
glMatrixMode(GL_Projection)
• Replacement by either following commands
glLoadIdentity();
glLoadMatrix(M);
• Multiple transformations (either in modeling or viewing)
are applied in reverse order
Projection Transformation
• Transformation from scene to image
• Orthographic projection
– glOrtho (left, right, bottom, top, near, far)
• Perspective projection
– glFrustum (left, right, bottom, top, near, far)
20Budditha Hettige
Setting Viewing Matrix
glMatrixMode(GL_PROJECTION);
Sets the switch so that loaded matrix goes into
the projection stack.
glLoadIdentity();
Pushes an identity matrix onto the stack;
gluOrtho2D(GLdouble left, Gldouble right,
Gldouble bottom, Gldouble top);
Sets the current view to an orthographic
projection with view volume bounded by x = left, x
= right, y = bottom, y = top, z = -1.0 and z = 1.0.
21Budditha Hettige
Viewport Transformation
MyWindow
x
y
h
w
void glViewport(Glint x, GLint y, GLsizei w, Glsizei h);
Default viewport corresponds to entire window drawable area.
Clipping
Window
Budditha Hettige 22
Example
• GL_POINTS
• GL_LINES
• GL_TRIANGLES
• GL_TRIANGLE_STRIP
• GL_QUAD_STRIP
• GL_LINE_STRIP
• GL_LINE_LOOP
• GL_QUADS
• GL_POLYGON
• GL_TRIANGLE_FAN
23Budditha Hettige
OpenGL applications
24Budditha Hettige

More Related Content

PPTX
MULTIPLEXER
PDF
Basics of Digital Design and Verilog
PDF
Assembly language 8086
PPT
Introduction for microprocessor
PDF
Digital Electronics Notes.pdf
PPTX
4. block coding
PPTX
flip flops
PDF
VHDL-Behavioral-Programs-Structure of VHDL
MULTIPLEXER
Basics of Digital Design and Verilog
Assembly language 8086
Introduction for microprocessor
Digital Electronics Notes.pdf
4. block coding
flip flops
VHDL-Behavioral-Programs-Structure of VHDL

What's hot (20)

PPTX
Dynamic debugging in 8085 microprocessor
PPTX
HDL (hardware description language) presentation
PPSX
8085 Interfacing with I/O Devices or Memory
PPTX
Hill climbing algorithm
PPTX
Finite State Machine.ppt.pptx
PPTX
Logical, Shift, and Rotate Instruction
PDF
Chapter 03 Boolean Algebra and Combinational Logic
PPTX
Arduino Workshop (3).pptx
PPT
Assembly Language Lecture 5
PPT
Fuzzy logic ppt
PPTX
Data Communication Unit 1
PPTX
Parallel Adder and Subtractor
PPTX
Presentation on Karnaugh Map
PPTX
Hardware description languages
PPTX
Basic theorems and properties of boolean algebra
PPTX
Introduction to multiplexer and demultiplexer
PDF
VLSI Lab manual PDF
PPTX
Line Coding.pptx
PPT
Multiplexers & Demultiplexers
Dynamic debugging in 8085 microprocessor
HDL (hardware description language) presentation
8085 Interfacing with I/O Devices or Memory
Hill climbing algorithm
Finite State Machine.ppt.pptx
Logical, Shift, and Rotate Instruction
Chapter 03 Boolean Algebra and Combinational Logic
Arduino Workshop (3).pptx
Assembly Language Lecture 5
Fuzzy logic ppt
Data Communication Unit 1
Parallel Adder and Subtractor
Presentation on Karnaugh Map
Hardware description languages
Basic theorems and properties of boolean algebra
Introduction to multiplexer and demultiplexer
VLSI Lab manual PDF
Line Coding.pptx
Multiplexers & Demultiplexers
Ad

Similar to Graphics Programming OpenGL & GLUT in Code::Blocks (20)

PPTX
Computer Graphics with OpenGL presentation Slides.pptx
PPT
openGL basics for sample program (1).ppt
PPT
openGL basics for sample program.ppt
PDF
OpenGL Introduction.
PPTX
UNIT 1 OPENGL_UPDATED .pptx
PDF
graphics notes on computer science students to study various algorithmic-054-...
PDF
COMPUTER GRAPHICS PROJECT REPORT
PPTX
OpenGL_summer2012.ccccccccccccccccccpptx
PDF
Clock report management system project report.pdf
PDF
Clock report management system project report.pdf
PPT
Open gl
PPT
Opengl (1)
PDF
Open GL Programming Training Session I
PPTX
CGLabLec6.pptx
PPT
01.Opengl_intro-2.ppt
PDF
lab1-ppt.pdf
PDF
The Ring programming language version 1.5.1 book - Part 52 of 180
PDF
The Ring programming language version 1.8 book - Part 60 of 202
PDF
Ctrl-C redesign for gcc cauldron in 2022 in prague
PPTX
BYO3D 2011: Rendering
Computer Graphics with OpenGL presentation Slides.pptx
openGL basics for sample program (1).ppt
openGL basics for sample program.ppt
OpenGL Introduction.
UNIT 1 OPENGL_UPDATED .pptx
graphics notes on computer science students to study various algorithmic-054-...
COMPUTER GRAPHICS PROJECT REPORT
OpenGL_summer2012.ccccccccccccccccccpptx
Clock report management system project report.pdf
Clock report management system project report.pdf
Open gl
Opengl (1)
Open GL Programming Training Session I
CGLabLec6.pptx
01.Opengl_intro-2.ppt
lab1-ppt.pdf
The Ring programming language version 1.5.1 book - Part 52 of 180
The Ring programming language version 1.8 book - Part 60 of 202
Ctrl-C redesign for gcc cauldron in 2022 in prague
BYO3D 2011: Rendering
Ad

More from Budditha Hettige (20)

PDF
Algorithm analysis
PDF
PDF
Link List
PDF
PDF
Data Structures 01
PDF
Drawing Fonts
PDF
Texture Mapping
PDF
PDF
PDF
OpenGL 3D Drawing
PDF
2D Drawing
PDF
Introduction to Computer Graphics
PPTX
Computer System Architecture Lecture Note 9 IO fundamentals
PPTX
Computer System Architecture Lecture Note 8.1 primary Memory
PPTX
Computer System Architecture Lecture Note 8.2 Cache Memory
PPTX
Computer System Architecture Lecture Note 7 addressing
PPT
Computer System Architecture Lecture Note 6: hardware performance
PPT
Computer System Architecture Lecture Note 5: microprocessor technology
PPT
Computer System Architecture Lecture Note 3: computer architecture
Algorithm analysis
Link List
Data Structures 01
Drawing Fonts
Texture Mapping
OpenGL 3D Drawing
2D Drawing
Introduction to Computer Graphics
Computer System Architecture Lecture Note 9 IO fundamentals
Computer System Architecture Lecture Note 8.1 primary Memory
Computer System Architecture Lecture Note 8.2 Cache Memory
Computer System Architecture Lecture Note 7 addressing
Computer System Architecture Lecture Note 6: hardware performance
Computer System Architecture Lecture Note 5: microprocessor technology
Computer System Architecture Lecture Note 3: computer architecture

Recently uploaded (20)

PPTX
PPH.pptx obstetrics and gynecology in nursing
PPTX
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
PPTX
master seminar digital applications in india
PDF
Supply Chain Operations Speaking Notes -ICLT Program
PDF
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
PDF
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
PDF
Insiders guide to clinical Medicine.pdf
PDF
Mark Klimek Lecture Notes_240423 revision books _173037.pdf
PPTX
The Healthy Child – Unit II | Child Health Nursing I | B.Sc Nursing 5th Semester
PDF
Complications of Minimal Access Surgery at WLH
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
PPTX
Institutional Correction lecture only . . .
PDF
Module 4: Burden of Disease Tutorial Slides S2 2025
PDF
Classroom Observation Tools for Teachers
PPTX
Pharma ospi slides which help in ospi learning
PDF
Abdominal Access Techniques with Prof. Dr. R K Mishra
PPTX
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
PDF
Anesthesia in Laparoscopic Surgery in India
PPTX
Renaissance Architecture: A Journey from Faith to Humanism
PPH.pptx obstetrics and gynecology in nursing
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
master seminar digital applications in india
Supply Chain Operations Speaking Notes -ICLT Program
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
Insiders guide to clinical Medicine.pdf
Mark Klimek Lecture Notes_240423 revision books _173037.pdf
The Healthy Child – Unit II | Child Health Nursing I | B.Sc Nursing 5th Semester
Complications of Minimal Access Surgery at WLH
FourierSeries-QuestionsWithAnswers(Part-A).pdf
STATICS OF THE RIGID BODIES Hibbelers.pdf
Institutional Correction lecture only . . .
Module 4: Burden of Disease Tutorial Slides S2 2025
Classroom Observation Tools for Teachers
Pharma ospi slides which help in ospi learning
Abdominal Access Techniques with Prof. Dr. R K Mishra
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
Anesthesia in Laparoscopic Surgery in India
Renaissance Architecture: A Journey from Faith to Humanism

Graphics Programming OpenGL & GLUT in Code::Blocks

  • 1. CSC 307 1.0 Graphics Programming Budditha Hettige Department of Statistics and Computer Science
  • 2. Graphics Programming OpenGL & GLUT in Code::Blocks 2Budditha Hettige
  • 3. OpenGL & Code::block • Download Code::Blocks – http://www.sci.brooklyn.cuny.edu/~goetz/codeblocks/ • Download the GLUT bin file from – http://www.xmission.com/~nate/glut.html • Save files as – Copy glut32.dll to • C:windowssystem – Copy glut32.lib to • C:Program FilesCodeBlocksMinGWlib, – Copy glut.h to • C:Program FilesCodeBlocksMinGWincludeGL. 3Budditha Hettige
  • 4. Code::Bolock Project 1. Start Code::Blocks and make a new project. 2. Select to make a new GLUT project and press Go to continue. 3. Press Next at this menu 4 2 3 Budditha Hettige
  • 5. Code::Bolock Project 4. Give a project title, and a location where to create the project and then press Next 5. Tell Code::Blocks to where you stored your GL files, then press Next 5 4 5 Budditha Hettige
  • 6. Code::Bolock Project • Set compiler as “GNU GCC Compiler”, and press Finish. • Open up the sample source file by double clicking on it • Add #include <windows.h> at line 14 6Budditha Hettige
  • 7. Code::Bolock Project • Compile and build an application 7Budditha Hettige
  • 8. Sample 01 # include <windows.h> #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) { glutInit(&argc,argv); glutCreateWindow("simple"); glutDisplayFunc(mydisplay); glutMainLoop(); } 8Budditha Hettige
  • 9. GLUT Functions glutInit(int *argc, char** argv); Initializes a window session. glutCreateWindow(char *name); Creates a window with title *name. glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); Sets the display mode to single buffered and RGB color. glutInitWindowSize (GLsizei h, GLsizei w); Sets initial window size to h x w. glutInitWindowPosition(x,y); Sets initial window position to (x, y). 9Budditha Hettige
  • 10. GLUT Functions • void glFlush() force execution of GL commands in finite time • void glutDisplayFunc(void (*func)(void)); sets the display callback for the current window. • void glutMainLoop(void); Enters the GLUT event processing loop 10Budditha Hettige
  • 11. OpenGL Attributes • glClearColor(1.0, 1.0, 1.0, 0.0); – Sets background color to white – Fourth argument is transparency; 0.0 is opaque – Sets a state variable • glPointSize(2.0); – Sets point size to be 2 pixels wide – Note that this is not a device-independent attribute – Sets a state variable 11Budditha Hettige
  • 12. glClear • Clearing the Color Buffer – glClear(GL_COLOR_BUFFER_BIT); • Values – GL_COLOR_BUFFER_BIT Indicates the buffers currently enabled for color writing. – GL_DEPTH_BUFFER_BIT Indicates the depth buffer. – GL_ACCUM_BUFFER_BIT Indicates the accumulation buffer. – GL_STENCIL_BUFFER_BIT Indicates the stencil buffer. 12Budditha Hettige
  • 14. OpenGL Primitive Syntax glBegin ( type ); glVertex* ( ); . . . . glVertex* ( ); glEnd ( ); 14 glBegin(GL_POLYGON); glVertex2f(-0.5, -0.5); glVertex2f(-0.5, 0.5); glVertex2f(0.5, 0.5); glVertex2f(0.5, -0.5); glEnd(); glBegin(GL_TRIANGLES); glVertex3f( 0.0f, 1.0f, -10.0f); glVertex3f(-1.0f,-1.0f, -10.0f); glVertex3f( 1.0f,-1.0f, -10.0f); glEnd(); glBegin(GL_LINES); glVertex3f(0.25, 0.25, 0.0); glVertex3f(0.75, 0.75, 0.0); glEnd(); Budditha Hettige
  • 15. Sample 02 # include <windows.h> # include <GL/glut.h> void display(void) { glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 0.0, 0.0); //red glBegin(GL_QUADS); glVertex3f (0.25, 0.25, 0.0); glVertex3f (0.75, 0.25, 0.0); glColor3f (0.0, 0.0, 1.0); //blue glVertex3f (0.75, 0.75, 0.0); glVertex3f (0.25, 0.75, 0.0); glEnd(); glutSolidSphere(0.15,12,2); //draw a sphere glFlush (); } 15 int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutInitWindowSize (250, 250); glutInitWindowPosition (100, 100); glutCreateWindow ("hello"); init (); glutDisplayFunc(display); glutMainLoop(); } Budditha Hettige
  • 16. Sample 02 void init (void) { glClearColor (0.0, 0.0, 0.0, 0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); } 16Budditha Hettige
  • 17. glutInitDisplayMode • Sets the initial display mode. – glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); • Values – GLUT_RGBA – GLUT_RGB – GLUT_INDEX – GLUT_SINGLE – GLUT_DOUBLE – GLUT_ACCUM – GLUT_ALPHA – GLUT_DEPTH – GLUT_STENCIL – GLUT_MULTISAMPLE – GLUT_STEREO – GLUT_LUMINANCE 17Budditha Hettige
  • 18. glColor • Set the current color – glColor3f (1.0, 0.0, 0.0); • Example – void glColor3i(GLint red, GLint green, GLint blue); – void glColor3f(GLfloat red, GLfloat green, GLfloat blue); – glColor3f (1.0, 0.0, 0.0); //red – glColor3f (0.0, 0.0, 1.0); //blue 18Budditha Hettige
  • 19. Budditha Hettige 19 OpenGL Transformations • Before applying modeling or viewing transformations, need to set glMatrixMode(GL_MODELVIEW) • Before applying projection transformations, need to set glMatrixMode(GL_Projection) • Replacement by either following commands glLoadIdentity(); glLoadMatrix(M); • Multiple transformations (either in modeling or viewing) are applied in reverse order
  • 20. Projection Transformation • Transformation from scene to image • Orthographic projection – glOrtho (left, right, bottom, top, near, far) • Perspective projection – glFrustum (left, right, bottom, top, near, far) 20Budditha Hettige
  • 21. Setting Viewing Matrix glMatrixMode(GL_PROJECTION); Sets the switch so that loaded matrix goes into the projection stack. glLoadIdentity(); Pushes an identity matrix onto the stack; gluOrtho2D(GLdouble left, Gldouble right, Gldouble bottom, Gldouble top); Sets the current view to an orthographic projection with view volume bounded by x = left, x = right, y = bottom, y = top, z = -1.0 and z = 1.0. 21Budditha Hettige
  • 22. Viewport Transformation MyWindow x y h w void glViewport(Glint x, GLint y, GLsizei w, Glsizei h); Default viewport corresponds to entire window drawable area. Clipping Window Budditha Hettige 22
  • 23. Example • GL_POINTS • GL_LINES • GL_TRIANGLES • GL_TRIANGLE_STRIP • GL_QUAD_STRIP • GL_LINE_STRIP • GL_LINE_LOOP • GL_QUADS • GL_POLYGON • GL_TRIANGLE_FAN 23Budditha Hettige