Доброго дня! 
Есть пара вопросов по созданию игры на С++ и OpenGL.
Есть задача - написать некую 2d (или 3d) простенькую игрушку типа 
арканойда/тетриса/пакмана. 
Необходимо использовать только С++ и OpenGL БЕЗ каких-либо 
сторонних библиотек типа glut и пр. 
Игрушка пишется под Android с использованием NDK (С++) . 
Я немного ковырялся в OpenGL но glut везде и всюду.. Хотелось бы 
как-то отказаться от него - он ведь не поддерживается больше? 
Да и полезно я думаю будет углубиться в структуру и философию 
чистого OpenGL. 
Так как до этого я просто рисовал геометрию и полноценного клиента не делал 
то накидал вот такой план: 
/*Для примера возьмем Пакмана*/ 
0. Разобраться в NDK и привязать к нему OpenGL. 
1. Создать, вывести на экран и подвигать по экрану Пакмана. 
1.1 Сделать внятную анимацию пакмана. 
2. Создать и вывести на экран лаберинт. 
3. Создать обработчик стэйтов на манер вот этого - 
http://habrahabr.ru/post/114933/ 4. /*Далее по списку*/ 
Итак теперь просьбы и вопросы: 
1)Правильно ли я подошел к решению проблемы? 
2) Есть ли хорошие книги по OpenGL в "чистом" виде? 
2.1 Например в книгах есть инициализация окна с помощью glut. 
Может мне тогда переписывать данные функции под Android? 
(в NDK наверняка есть какой-то оконный манагер). 
2.2 Есть ли внятный туториал по перехвату клавиатуры в реальном времени? 
3) Как отрисовывать не все окно, а только часть?
например - возьмем окно с кругом -
void myInit(void) 
{ 
         glClearColor(1.0, 1.0, 1.0, 0.0); 
         glColor3f(0.0f, 0.0f, 0.0f); 
         glPointSize(4.0); 
         glMatrixMode(GL_PROJECTION); 
         glLoadIdentity(); 
         gluOrtho2D(0.0, 640.0, 0.0, 480.0); 
} 
 
void myDisplay(void) 
{ 
     glClear(GL_COLOR_BUFFER_BIT); 
     glBegin( GL_LINE_LOOP );
           for( int i = 0; i < 50; i++ ) 
           {
            float a = 300+(float)i / 50.0f * 3.1415f * 2.0f;
             glVertex2f( 300+ cos( a ) * 10.0f, 300+ sin( a ) * 10.0f );
           }
         glEnd(); 
         glFlush(); 
        
}
void myChandePlace()
{
     
     
     
}
 
int main(int argc, char** argv) 
{ 
         glutInit(&argc, argv); 
         glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); 
         glutInitWindowSize(640, 480); 
         glutInitWindowPosition(100, 150); 
         glutCreateWindow("my first attempt"); 
         glutDisplayFunc(myDisplay); 
         myInit(); 
         glutMainLoop(); 
         return 0;
} 
выводится круг на белом фоне. Я хочу им подвигать с клавиатуры. Как это сделать?
Я хотел стирать этот круг и перерисовывать при каждом нажатии на стрелочки. Если окно пустое - в теории это 
можно сделать. А есть нет?
Не перерисовывать же каждый раз всю сцену заново...
В коде есть функция "void myChandePlace() " - какой примерно должен быть код чтобы я мог реализовать управление с клавиатуры?
Заранее благодарю.
Добавлено через 4 минуты и 16 секунд:Быть может можно использовать это - 
glNewList(номер листа);
// здесь сама сцена (glBegin'ы, glEnd'ы и т. д.)
glEndList;