Abstracting Texture Renderer (source code)

Android now has an excellent Tutorial on OpenGL ES 2.0!!!

Because OpenGL is stateful, how do you target a specific matrix especially in OpenGL ES 1.x (a fixed function pipeline)? For example we know that when we call glFrustum() it sets up the projection matrix, but the documentation suggests that if takes the current matrix and multiplies with the projection matrix? But there are more than one matrix: many matrices that are model, and at least one more that is a view matrix?

Frame buffers: Color, depth, and stencil. You can find real good explanation of this topic in chatper 10 of the free OpenGL red book

game development books and resources

5) General Plan


General Plan

GLSurfaceView and background!!

7) glVertexAttribPointer


How to use and what are the arguments for this api. And any additional notes.

How are vertex colors interpolated in OpenGL?

How can I animate two figures independently?

How can I change the orientation of the android emulator?

How can I create a MVP matrix for ES 2.0 in Android?

How can I debug OpenGL errors?

How can I draw multiple figures

how can i scroll my drawing

In es 1.0, I was able to use indexing into an existing vertex buffer in the glDrawElements method. This allowed me to specify only 4 points for drawing a square or rectangle. without the indexing I would have needed 6 points making up 2 triangles. How could I do this in ES 2.0?

How to draw a regular polygon

17) how to draw on a canvas


how to draw on a canvas

How to run Android applications on the device from Eclipse ADB

19) How to texture a cube?


vertex shader. fragment shader. Mistakes I made. links to other resource and so on...

How to work with matrices in OpenGL ES 2.0

Is there an OpenGL GLUT for Android?

22) Math calculator


Math calculator

23) Modelling tools for 3D


Modelling tools for 3D

24) OpenGL



25) OpenGL 1.5 sample code


OpenGL 1.5 sample code

26) OpenGL 2



27) opengl 3


opengl 3

opengl books and resources

OpenGL ES 2.0 is not backward compatible with 1.x

OpenGL ES 2.0 Sample Code

31) opengl read


opengl read

OpenGL support in the Android Emulator?

33) OpenGL Textures


OpenGL Textures

Relationship between texture target and texture name?

Tell me about Depth in OpenGL? and how to hide hidden surfaces.

Tell me about vertex shader

Tell me one more time what the opengl pipeline is...

38) this is a demo


this is a demo

Version numbers for OpenGL, OpenGL ES, and GLSL

My triangles are all messed up. Then the mistake boiled down to this piece of code

//6. bottom-triangles
//b1, b4, f3
1,-1,1,		-1,-1,1		-1,-1,0,
//b1, f3, f4
1,-1,1,		-1,-1,0,	1,-1,0

Compiler is fine. Just my triangle! Can you spot the mistake! it is a fun mistake.

what are model/object/eye/world/screen coordinates?

What are OpenGL modelling tools?

What are reserved variable names in GLSL?

44) What are VAOs and VBOs?


You see in OpenGL literature the terms VAO and VBO being referred. These are Vertex Array Object and Vertex Buffer Object respectively. A vertex buffer deals with the memory area storing the vertex information. Pure data byte after byte. A VAO, vertex array object, is a structure that describes how opengl should interpret the data that in the VBO.

What are vertex attributes in OpenGL ES?

What happened to glTexEnvf in GLES 2.0?

What is a fragment in OpenGL?

OpenGL APIs require two things to work. They need a place to manage the state of the OpenGL like a working memory. This is the rendering context. Then they also need a surface to draw on. The buffers are attached to the surface. Example buffers are color buffer, stencil buffer, and depth buffer.

Setting up and managing these two aspects is the realm of the underlying OS. In OpenGL ES there is a standard called EGL that deals with these integration APIs

Each vertex in opengl can have a surface normal. A surface normal is a perpendicular vector with respect to the tangential surface at that vertex. So if you have a triangulated vertices on the surface of a sphere then the normal at each vertex may not be parallel to each other.

What is allowed between two calls to glDrawElements?

51) what is color sum?


How to add the primary and secondary colors of a fragment (pixel)

52) what is FOG?


Modifying the color of a pixel/fragment based on how far or near it is in the view

The output of frament processing is to figure out the target pixels and their characteristics. However before these pixels are written to the framebuffer to become part of the screen they have to undergo number of tests. Does the pixel position in the framebuffer is currently owned by this OpenGL context or Is that controlled by someone else. If the depth testing is on, is this pixel behind another pixel? Is there a stencil active that may block this pixel from showing? These are are called fragment tests. If the pixels don't pass the test they won't be written to the frame buffer.

54) What is Gouraud Shading?


What is Gouraud Shading?

What is OpenGL ES: A definition and scope

56) What is OpenGL GLEW?


Nice explanation from

OpenGL allows extensions by hardware vendors. OpenGL has a protocol and low level API to discover what these extensions are and the supported functions. Using extensions in your C++ code is - unfortunately - platform specific. The address of the function (function pointer) must be retrieved from the OpenGL implementation (e.g. hardware driver). Under Windows this can be done using "wglGetProcAddress".

GLEW is a common API to write portable code which internally hides the platform specific detail. So you will be downloading GLEW for each platform and the client programs can stay portable as long as the target platform supports a GLEW implementation.

57) what is pixel ownership?


OpenGL can manipulate a frame buffer for a screen. The pixels in a window which are controlled by an opengl context belongs to this opengl. If this is overlaid by another window then OpenGL needs to know it doesn't own these pixels.

What is precision qualifier in gls?

you have the standard input and output variables. You also have some types that are unique to glsl. For example attribute variables that are specific to a vertex. There are "uniform" variables that cuts across all vertices. There are reserved variables, there are built-in variables etc. This page will throw some light on this type of variables.

The order in which you indicate vertices determine the clock-wise or anti-clock-wise orientation of that geometry (such as a triangle or a square etc). As you follow that winding see how a right-hand-screw will advance. The direction of the advance will tell you which surface is facing outwards and which surface is facing inwards.