Native Android application development

I am seeking a way to write native android applications. Now I am exprloring Tegra Android development Pack 2.0. My problem is windowing library. Because GLUT is unavailable on android I need some other graphic library. I was unable to understand how to draw rectangle or triangle using Tegra Android development Pack 2.0. I tried to call GL primitived directly:

GLuint Engine::LoadShader ( GLenum type, const char *shaderSrc )
{
GLuint shader;
GLint compiled;

// Create the shader object
shader = glCreateShader ( type );

if ( shader == 0 )
return 0;

// Load the shader source
glShaderSource ( shader, 1, &shaderSrc, NULL );

// Compile the shader
glCompileShader ( shader );

// Check the compile status
glGetShaderiv ( shader, GL_COMPILE_STATUS, &compiled );

if ( !compiled )
{
GLint infoLen = 0;

  glGetShaderiv ( shader, GL_INFO_LOG_LENGTH, &infoLen );

  if ( infoLen > 1 )
  {
     char* infoLog = (char*)(malloc (sizeof(char) * infoLen ));

     glGetShaderInfoLog ( shader, infoLen, NULL, infoLog );
     //esLogMessage ( "Error compiling shader:\n%s\n", infoLog );

     free ( infoLog );
  }

  glDeleteShader ( shader );
  return 0;

}

return shader;

}

int Engine::makeProgram ( GLuint * dstProgramObject ) {

GLbyte vShaderStr =
"attribute vec4 vPosition; \n"
"void main() \n"
"{ \n"
" gl_Position = vPosition; \n"
"} \n";

GLbyte fShaderStr =
"precision mediump float;\n"
"void main() \n"
"{ \n"
" gl_FragColor = vec4 ( 1.0, 0.0, 0.0, 1.0 );\n"
"} \n";

GLuint vertexShader;
GLuint fragmentShader;
GLuint programObject;
GLint linked;

// Load the vertex/fragment shaders
vertexShader = LoadShader ( GL_VERTEX_SHADER, (const char *)vShaderStr );
fragmentShader = LoadShader ( GL_FRAGMENT_SHADER, (const char *)fShaderStr );

// Create the program object
programObject = glCreateProgram ( );

if ( programObject == 0 )
return 0;

glAttachShader ( programObject, vertexShader );
glAttachShader ( programObject, fragmentShader );

// Bind vPosition to attribute 0
glBindAttribLocation ( programObject, 0, "vPosition" );

// Link the program
glLinkProgram ( programObject );

// Check the link status
glGetProgramiv ( programObject, GL_LINK_STATUS, &linked );

if ( !linked )
{
GLint infoLen = 0;

  glGetProgramiv ( programObject, GL_INFO_LOG_LENGTH, &infoLen );

  if ( infoLen > 1 )
  {
     char* infoLog = (char*)(malloc (sizeof(char) * infoLen ));
     glGetProgramInfoLog ( programObject, infoLen, NULL, infoLog );
     free ( infoLog );
  }

  glDeleteProgram ( programObject );
  return GL_FALSE;

}
m_debugComment = "Link successfull";
// Store the program object
*dstProgramObject = programObject;

//glClearColor ( 0.0f, 0.0f, 0.0f, 0.0f );
return GL_TRUE;
}

static GLfloat vVertices = { 0.0f, 0.5f, 0.0f, -0.5f, -0.5f, 0.0f, 0.5f, -0.5f, 0.0f };
glViewport ( 200, 200, 50, 50 );
glClear ( GL_COLOR_BUFFER_BIT );
static GLuint programObject;
makeProgram (&programObject);
glUseProgram ( programObject );
glVertexAttribPointer ( 0, 3, GL_FLOAT, GL_FALSE, 0, vVertices );
glEnableVertexAttribArray ( 0 );
glDrawArrays ( GL_TRIANGLES, 0, 3 );

I also tried using nv_draw_rect.cpp,

But I still could not display even single rectangle!

So, I have questions:

  1. How to draw figure using Tegra Android development Pack 2.0?
  2. Which windowing library is it better to use for android native development?

Thanks in advance

Tamachi