SlideShare a Scribd company logo
Introduction To OpenGL in Android Tamillharasan Chandran & Krishnaprasad
Concepts Code!   Basic Shapes Animation
Concepts GPU Cross-Platform
Concepts      OpenGL OpenGL ES OpenGL ES Not just Android!
Concepts Vector Graphics Raster Graphics Lines points, lines, polygons, Surface normals etc .. Grid of pixels
OpenGL Rendering Pipeline Simplified
One more thing! State Machine
Code!
Make sure to add this!
Two Steps GLSurfaceView GLSurfaceView.Renderer
GLSurfaceView What is it? Why is it needed?
GLSurfaceView           GLSurfaceView view = new GLSurfaceView(this);      view.setEGLContextClientVersion(2);      view.setRenderer(new SquareRenderer());
GLSurfaceView.Renderer What is it? Why is it needed? Create a Subclass of GLSurfaceView.Renderer  Setup the view port
GLSurfaceView.Renderer public class SquareRenderer implements GLSurfaceView.Renderer {      public void onSurfaceCreated(GL10 unused, EGLConfig config) {                  }      public void onDrawFrame(GL10 unused) {      }      public void onSurfaceChanged(GL10 unused, int width, int height)   {              } } GLES20.glViewport(0, 0, width, height); GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);   GLES20.glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
There you go!! Your First Android OpenGL App
Drawing a Basic Shape
Define a Square All the 2D/ 3D objects needs to be defined using Primitives. Vertex -  A vertex is a point where two or more edges meet Edges - A vertex (vertices in plural) is the smallest building block of 3D model. A vertex is a point where two or more edges meet Face is a triangle. Face is a surface between three corner vertices and three surrounding edges. 
-0.5f, -0.5f, 0.0f,  // Bottom Left 0.5f, -0.5f, 0.0f,  // Bottom Right -0.5f, 0.5f, 0.0f,  // Top Left 0.5f, 0.5f, 0.0f,  // Top Right
private void initShapes(){   float squareCoords[] = {     //The coordinates       };    // initialize vertex Buffer for square   ByteBuffer vbb = ByteBuffer.allocateDirect(squareCoords.length * 4);    vbb.order(ByteOrder.nativeOrder());    squareVB = vbb.asFloatBuffer();     squareVB.put(squareCoords);     squareVB.position(0); }
Draw Methods  glDrawArrays() glDrawElements()   Available Primitives in OpenGL ES GL_POINTS GL_LINE_STRIP GL_LINE_LOOP GL_LINES GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN Draw a square 
GL_POINTS GL_LINES GL_LINE_STRIP GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN
OpenGL Rendering Pipeline Simplified
Shader Programs Vertex Shader Fragment Shader Loading the shader objects Attaching the Shader objects to Shader program Linking the program to create executable shader program
 
Vertex Shader      Fragment Shader     attribute vec4 vertexPosition; void main(){    gl_Position = vertexPosition; } precision mediump float; void main(){   gl_FragColor = vec4(0.5, 0.5, 0.5, 1.0); }
Loading the Shader GLES20.glCompileShader(vertexShader); GLES20.GL_FRAGMENT_SHADER int vertexShader =           GLES20.glCreateShader(GLES20. GL_VERTEX_SHADER ); GLES20.glShaderSource(vertexShader, shaderCode);
Compiling and Linking the Shader program shaderProgram = GLES20.glCreateProgram(); GLES20.glAttachShader(shaderProgram, vertexShader);  GLES20.glAttachShader(shaderProgram, fragmentShader); GLES20.glLinkProgram(shaderProgram);
 
attributePositionHandle =     GLES20. glGetAttribLocation (shaderProgram,"vertexPosition");
Drawing the square GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT |  GLES20.GL_DEPTH_BUFFER_BIT); GLES20.glUseProgram(shaderProgram); GLES20.glVertexAttribPointer(attributePositionHandle,                                3, GLES20.GL_FLOAT,  false, 12, squareVB); GLES20.glEnableVertexAttribArray(attributePositionHandle); GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
 
Apply Projection and Camera View Square Coordinate system is a mapped to non-square screen To display Objects in correct proportions on different device screens
Setting up the projection private float[] MVPMatrix = new float[16]; private float[] projectionMatrix = new float[16]; //-- float ratio = (float) width / height; Matrix.frustumM(projectionMatrix, 0, -ratio, ratio, -1, 1, 3, 7); Matrix.setLookAtM(ViewMatrix, 0, 0, 0, -3, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
Applying the MVP matrix uniform mat4 MVPMatrix ; attribute vec4 vertexPosition;  void main(){   gl_Position =  MVPMatrix  * vertexPosition;   }
Applying the MVP matrix(Contd) ... Matrix.multiplyMM(MVPMatrix, 0, projectionMatrix, 0, viewMatrix, 0); GLES20.glUniformMatrix4fv(MVPMatrixHandle, 1, false, MVPMatrix, 0); // Draw the square GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4); ...
 
Giving life to the objects (Animation)
Animation Matrix.multiplyMM(modelViewProjectionMatrix, 0, projectionMatrix, 0, modelMatrix, 0); GLES20.glUniformMatrix4fv(MVPMatrixHandle, 1, false, modelViewProjectionMatrix, 0); long time = SystemClock.uptimeMillis() % 4000L; float angle = 0.090f * ((int) time); Matrix.setRotateM(modelMatrix, 0, angle, 0, 0, 1.0f); Matrix.multiplyMM(modelViewProjectionMatrix,0,projectionMatrix,0,viewMatrix,0); 

More Related Content

What's hot (20)

PDF
Open gl
EU Edge
 
PDF
Getting Started with OpenGL ES
John Wilker
 
PDF
OpenGL L01-Primitives
Mohammad Shaker
 
PDF
Opengl basics
pushpa latha
 
PPTX
Lecture 6 introduction to open gl and glut
simpleok
 
PPTX
OpenGL ES Presentation
Eric Cheng
 
PPTX
Baiscs of OpenGL
Mrinmoy Dalal
 
PPT
Open gl
ch samaram
 
PDF
OpenGL L03-Utilities
Mohammad Shaker
 
PDF
OpenGL L07-Skybox and Terrian
Mohammad Shaker
 
PDF
OpenGL L02-Transformations
Mohammad Shaker
 
PDF
OpenGL Introduction.
Girish Ghate
 
PDF
OpenGL L06-Performance
Mohammad Shaker
 
PDF
Android High performance in GPU using opengles and renderscript
Arvind Devaraj
 
PPT
Programming with OpenGL
Syed Zaid Irshad
 
PPTX
Chapter02 graphics-programming
Mohammed Romi
 
PDF
OpenGL Starter L02
Mohammad Shaker
 
PDF
Open gl basics
saad siddiqui
 
PPTX
OpenGL Shading Language
Jungsoo Nam
 
PPT
NV_path rendering Functional Improvements
Mark Kilgard
 
Open gl
EU Edge
 
Getting Started with OpenGL ES
John Wilker
 
OpenGL L01-Primitives
Mohammad Shaker
 
Opengl basics
pushpa latha
 
Lecture 6 introduction to open gl and glut
simpleok
 
OpenGL ES Presentation
Eric Cheng
 
Baiscs of OpenGL
Mrinmoy Dalal
 
Open gl
ch samaram
 
OpenGL L03-Utilities
Mohammad Shaker
 
OpenGL L07-Skybox and Terrian
Mohammad Shaker
 
OpenGL L02-Transformations
Mohammad Shaker
 
OpenGL Introduction.
Girish Ghate
 
OpenGL L06-Performance
Mohammad Shaker
 
Android High performance in GPU using opengles and renderscript
Arvind Devaraj
 
Programming with OpenGL
Syed Zaid Irshad
 
Chapter02 graphics-programming
Mohammed Romi
 
OpenGL Starter L02
Mohammad Shaker
 
Open gl basics
saad siddiqui
 
OpenGL Shading Language
Jungsoo Nam
 
NV_path rendering Functional Improvements
Mark Kilgard
 

Viewers also liked (20)

DOC
Socialmedia connecting the world with businesses
Geo Alega
 
PPT
routing Protocols and Virtual private network
hayenas
 
PDF
LTE Physical layer aspects
BP Tiwari
 
KEY
jQTouch at jQuery Conference 2010
David Kaneda
 
PDF
How to Develop a Rich, Native-quality User Experience for Mobile Using Web St...
David Kaneda
 
PPTX
Introduction to LESS
Manish Shekhawat
 
PDF
jQTouch and Titanium
Marc Grabanski
 
PDF
OpenGL NVIDIA Command-List: Approaching Zero Driver Overhead
Tristan Lorach
 
PDF
OpenGL ES 2.x Programming Introduction
Champ Yen
 
KEY
HTML5 로 iPhone App 만들기
JungHyuk Kwon
 
KEY
jQTouch – Mobile Web Apps with HTML, CSS and JavaScript
Philipp Bosch
 
PPTX
Apache web server
zrstoppe
 
PDF
jQuery in 15 minutes
Simon Willison
 
PPTX
jQuery PPT
Dominic Arrojado
 
PDF
Modern JavaScript Applications: Design Patterns
Volodymyr Voytyshyn
 
PDF
jQuery for beginners
Arulmurugan Rajaraman
 
PPT
Comparison and Contrast between OSI and TCP/IP Model
Conferencias FIST
 
PPT
OpenGL Basics
Sandip Jadhav
 
PPTX
Routing Information Protocol
Kashif Latif
 
ODP
Apache ppt
poornima sugumaran
 
Socialmedia connecting the world with businesses
Geo Alega
 
routing Protocols and Virtual private network
hayenas
 
LTE Physical layer aspects
BP Tiwari
 
jQTouch at jQuery Conference 2010
David Kaneda
 
How to Develop a Rich, Native-quality User Experience for Mobile Using Web St...
David Kaneda
 
Introduction to LESS
Manish Shekhawat
 
jQTouch and Titanium
Marc Grabanski
 
OpenGL NVIDIA Command-List: Approaching Zero Driver Overhead
Tristan Lorach
 
OpenGL ES 2.x Programming Introduction
Champ Yen
 
HTML5 로 iPhone App 만들기
JungHyuk Kwon
 
jQTouch – Mobile Web Apps with HTML, CSS and JavaScript
Philipp Bosch
 
Apache web server
zrstoppe
 
jQuery in 15 minutes
Simon Willison
 
jQuery PPT
Dominic Arrojado
 
Modern JavaScript Applications: Design Patterns
Volodymyr Voytyshyn
 
jQuery for beginners
Arulmurugan Rajaraman
 
Comparison and Contrast between OSI and TCP/IP Model
Conferencias FIST
 
OpenGL Basics
Sandip Jadhav
 
Routing Information Protocol
Kashif Latif
 
Apache ppt
poornima sugumaran
 
Ad

Similar to Introduction to open_gl_in_android (20)

PDF
Intro to OpenGL ES 2.0
Oleksandr Kozubets
 
PDF
GL Shading Language Document by OpenGL.pdf
shaikhshehzad024
 
PPT
Open gles
sarmisthadas
 
PDF
Android open gl2_droidcon_2014
Droidcon Berlin
 
PDF
The Ring programming language version 1.5.4 book - Part 110 of 185
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.8 book - Part 179 of 202
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.7 book - Part 169 of 196
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.5.2 book - Part 135 of 181
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.5.4 book - Part 119 of 185
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.6 book - Part 151 of 189
Mahmoud Samir Fayed
 
PDF
OpenGL ES 3.0 2013
Mindos Cheng
 
PDF
The Ring programming language version 1.9 book - Part 177 of 210
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.5.3 book - Part 143 of 184
Mahmoud Samir Fayed
 
PDF
A Novice's Guide to WebGL
Krzysztof Kula
 
PDF
The Ring programming language version 1.5.1 book - Part 134 of 180
Mahmoud Samir Fayed
 
PDF
OpenGL Starter L01
Mohammad Shaker
 
PDF
The Ring programming language version 1.7 book - Part 141 of 196
Mahmoud Samir Fayed
 
PPT
CS 354 Viewing Stuff
Mark Kilgard
 
Intro to OpenGL ES 2.0
Oleksandr Kozubets
 
GL Shading Language Document by OpenGL.pdf
shaikhshehzad024
 
Open gles
sarmisthadas
 
Android open gl2_droidcon_2014
Droidcon Berlin
 
The Ring programming language version 1.5.4 book - Part 110 of 185
Mahmoud Samir Fayed
 
The Ring programming language version 1.8 book - Part 179 of 202
Mahmoud Samir Fayed
 
The Ring programming language version 1.7 book - Part 169 of 196
Mahmoud Samir Fayed
 
The Ring programming language version 1.5.2 book - Part 135 of 181
Mahmoud Samir Fayed
 
The Ring programming language version 1.5.4 book - Part 119 of 185
Mahmoud Samir Fayed
 
The Ring programming language version 1.6 book - Part 151 of 189
Mahmoud Samir Fayed
 
OpenGL ES 3.0 2013
Mindos Cheng
 
The Ring programming language version 1.9 book - Part 177 of 210
Mahmoud Samir Fayed
 
The Ring programming language version 1.5.3 book - Part 143 of 184
Mahmoud Samir Fayed
 
A Novice's Guide to WebGL
Krzysztof Kula
 
The Ring programming language version 1.5.1 book - Part 134 of 180
Mahmoud Samir Fayed
 
OpenGL Starter L01
Mohammad Shaker
 
The Ring programming language version 1.7 book - Part 141 of 196
Mahmoud Samir Fayed
 
CS 354 Viewing Stuff
Mark Kilgard
 
Ad

Recently uploaded (20)

PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
Biography of Daniel Podor.pdf
Daniel Podor
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
Biography of Daniel Podor.pdf
Daniel Podor
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 

Introduction to open_gl_in_android

  • 1. Introduction To OpenGL in Android Tamillharasan Chandran & Krishnaprasad
  • 2. Concepts Code!   Basic Shapes Animation
  • 4. Concepts      OpenGL OpenGL ES OpenGL ES Not just Android!
  • 5. Concepts Vector Graphics Raster Graphics Lines points, lines, polygons, Surface normals etc .. Grid of pixels
  • 7. One more thing! State Machine
  • 9. Make sure to add this!
  • 10. Two Steps GLSurfaceView GLSurfaceView.Renderer
  • 11. GLSurfaceView What is it? Why is it needed?
  • 12. GLSurfaceView           GLSurfaceView view = new GLSurfaceView(this);      view.setEGLContextClientVersion(2);      view.setRenderer(new SquareRenderer());
  • 13. GLSurfaceView.Renderer What is it? Why is it needed? Create a Subclass of GLSurfaceView.Renderer  Setup the view port
  • 14. GLSurfaceView.Renderer public class SquareRenderer implements GLSurfaceView.Renderer {      public void onSurfaceCreated(GL10 unused, EGLConfig config) {                  }     public void onDrawFrame(GL10 unused) {      }     public void onSurfaceChanged(GL10 unused, int width, int height)   {              } } GLES20.glViewport(0, 0, width, height); GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);   GLES20.glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
  • 15. There you go!! Your First Android OpenGL App
  • 17. Define a Square All the 2D/ 3D objects needs to be defined using Primitives. Vertex -  A vertex is a point where two or more edges meet Edges - A vertex (vertices in plural) is the smallest building block of 3D model. A vertex is a point where two or more edges meet Face is a triangle. Face is a surface between three corner vertices and three surrounding edges. 
  • 18. -0.5f, -0.5f, 0.0f, // Bottom Left 0.5f, -0.5f, 0.0f, // Bottom Right -0.5f, 0.5f, 0.0f, // Top Left 0.5f, 0.5f, 0.0f, // Top Right
  • 19. private void initShapes(){   float squareCoords[] = {     //The coordinates      };   // initialize vertex Buffer for square   ByteBuffer vbb = ByteBuffer.allocateDirect(squareCoords.length * 4);   vbb.order(ByteOrder.nativeOrder());   squareVB = vbb.asFloatBuffer();    squareVB.put(squareCoords);    squareVB.position(0); }
  • 20. Draw Methods  glDrawArrays() glDrawElements()   Available Primitives in OpenGL ES GL_POINTS GL_LINE_STRIP GL_LINE_LOOP GL_LINES GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN Draw a square 
  • 21. GL_POINTS GL_LINES GL_LINE_STRIP GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN
  • 23. Shader Programs Vertex Shader Fragment Shader Loading the shader objects Attaching the Shader objects to Shader program Linking the program to create executable shader program
  • 24.  
  • 25. Vertex Shader      Fragment Shader     attribute vec4 vertexPosition; void main(){   gl_Position = vertexPosition; } precision mediump float; void main(){   gl_FragColor = vec4(0.5, 0.5, 0.5, 1.0); }
  • 26. Loading the Shader GLES20.glCompileShader(vertexShader); GLES20.GL_FRAGMENT_SHADER int vertexShader =           GLES20.glCreateShader(GLES20. GL_VERTEX_SHADER ); GLES20.glShaderSource(vertexShader, shaderCode);
  • 27. Compiling and Linking the Shader program shaderProgram = GLES20.glCreateProgram(); GLES20.glAttachShader(shaderProgram, vertexShader);  GLES20.glAttachShader(shaderProgram, fragmentShader); GLES20.glLinkProgram(shaderProgram);
  • 28.  
  • 29. attributePositionHandle =     GLES20. glGetAttribLocation (shaderProgram,"vertexPosition");
  • 30. Drawing the square GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT |  GLES20.GL_DEPTH_BUFFER_BIT); GLES20.glUseProgram(shaderProgram); GLES20.glVertexAttribPointer(attributePositionHandle,                                3, GLES20.GL_FLOAT,  false, 12, squareVB); GLES20.glEnableVertexAttribArray(attributePositionHandle); GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
  • 31.  
  • 32. Apply Projection and Camera View Square Coordinate system is a mapped to non-square screen To display Objects in correct proportions on different device screens
  • 33. Setting up the projection private float[] MVPMatrix = new float[16]; private float[] projectionMatrix = new float[16]; //-- float ratio = (float) width / height; Matrix.frustumM(projectionMatrix, 0, -ratio, ratio, -1, 1, 3, 7); Matrix.setLookAtM(ViewMatrix, 0, 0, 0, -3, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
  • 34. Applying the MVP matrix uniform mat4 MVPMatrix ; attribute vec4 vertexPosition;  void main(){   gl_Position = MVPMatrix * vertexPosition;   }
  • 35. Applying the MVP matrix(Contd) ... Matrix.multiplyMM(MVPMatrix, 0, projectionMatrix, 0, viewMatrix, 0); GLES20.glUniformMatrix4fv(MVPMatrixHandle, 1, false, MVPMatrix, 0); // Draw the square GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4); ...
  • 36.  
  • 37. Giving life to the objects (Animation)
  • 38. Animation Matrix.multiplyMM(modelViewProjectionMatrix, 0, projectionMatrix, 0, modelMatrix, 0); GLES20.glUniformMatrix4fv(MVPMatrixHandle, 1, false, modelViewProjectionMatrix, 0); long time = SystemClock.uptimeMillis() % 4000L; float angle = 0.090f * ((int) time); Matrix.setRotateM(modelMatrix, 0, angle, 0, 0, 1.0f); Matrix.multiplyMM(modelViewProjectionMatrix,0,projectionMatrix,0,viewMatrix,0); 

Editor's Notes

  • #4: The OpenGL API itself is not a programming language like C or C++. It is more like the C runtime library, which provides some prepackaged functionality. On the other hand, the OpenGL specification includes GLSL, the OpenGL Shading Language, which actually is a very C-like programming language. GLSL, however, does not control your application’s flow and logic, but rather it is intended for rendering operations. At a high level, application programs are not written in OpenGL, as much as they use OpenGL. There really is no such thing as an “OpenGL program”
  • #5: A Brief explanation about the latest Programmable pipleline. What is a shader ?  
  • #7: Explain about different stages in opengl pipeline. questions from audience
  • #23: Explain about different stages in opengl pipeline. questions from audience