In OpenGL ES 2.0, GL_QUADS and GL_POLYGON is not supported. Also fixed function pipeline is disabled in OpenGL ES 2.0. You need to create a shader program, and attach vertex shader and pixel shader with this program. Then set vertex data to the this program.
Here is a sample code in OpenGLES2.0.
Vertex shader source
attribute vec4 Position;
attribute vec4 SourceColor;
varying vec4 DestinationColor;
void main(void)
{
DestinationColor = SourceColor;
gl_Position = Position;
}
Pixel shader source
varying lowp vec4 DestinationColor;
void main(void)
{
gl_FragColor = DestinationColor;
}
Setup vertex data
private final float TriangleVerticesData[] =
{-1.0f, -1.0f, 0.0f,
-1.0f, 1.0f, 0.0f,
1.0f, -1.0f, 0.0f,
1.0f, 1.0f, 0.0f,};
ByteBuffer temp = ByteBuffer.allocateDirect( TriangleVerticesData.length * 4);
temp.order( ByteOrder.nativeOrder());
mTriangleVertices = temp.asFloatBuffer();
mTriangleVertices.put( TriangleVerticesData ).position( 0 );
Prepare shader program
nShaderProgram = GLES20.glCreateProgram();
int VSshader = GLES20.glCreateShader( GLES20.GL_VERTEX_SHADER );
GLES20.glShaderSource( VSshader, VSshaderSource);
GLES20.glCompileShader( VSshader );
int compiled[] = new int[1];
GLES20.glGetShaderiv( shader, GLES20.GL_COMPILE_STATUS, compiled, 0 );
if ( 0 == compiled[0] ) { GLES20.glDeleteShader( shader );
shader = 0;
}
int PSshader = GLES20.glCreateShader( GLES20.GL_PIXEL_SHADER );
GLES20.glShaderSource( VSshader, PSshaderSource);
GLES20.glCompileShader( PSshader );
{
int compiled[] = new int[1];
GLES20.glGetShaderiv( shader, GLES20.GL_COMPILE_STATUS, compiled, 0 );
if ( 0 == compiled[0] ) { GLES20.glDeleteShader( shader );
shader = 0;
}
}
Bind vertex data and draw quad to screen.
GLES20.glUseProgram( nShaderProgram );
int nParam = GLES20.glGetAttribLocation( nShaderProgram, "Position" );
mTriangleVertices.position( 0);
GLES20.glVertexAttribPointer( nParam, 3, GLES20.GL_FLOAT, false,
4 * sizeof(, mTriangleVertices );
GLES20.glEnableVertexAttribArray( nParam );
GLES20.glClear( GLES20.GL_COLOR_BUFFER_BIT );
GLES20.glDrawArrays( GLES20.GL_TRIANGLE_STRIP, 0, 4 );
GL_POLYGON is also allowed in OpenGLES 2.0, therefore you have to prepare equivalent vertex buffers for the POLYGON
object.
Please refer following link for more details.
http://developer.android.com/training/graphics/opengl/draw.html