Например:
Код:
bool Display (void)
{
glClearColor(0, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
map(); //отрисовка в 3D
ortho=1; //у меня это глобальная переменная типа bool. Мне просто это нужно во многих местах использовать
Reshape(WindowW,WindowH,0,0); // int WindowW,WindowH размеры окна
screen2d(); //отрисовка в 2D
ortho=0;
glFlush();
return TRUE;
}
вот reshape
Код:
void Reshape(GLsizei Width, GLsizei Height, GLsizei x0, GLsizei y0)
{
glViewport(x0, y0, Width, Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(ortho==1)
gluOrtho2D(0, (float)Width, 0, (float)Height);
if(ortho==0)
gluPerspective(45,(float)Width/Height,0.01,300);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
а в screen2d рисуешь всё что хочешь, например прямоугольник:
Код:
glLineWidth(1);
glBegin(GL_LINE_STRIP);
glVertex2f(x, y);
glVertex2f(x_1, y);
glVertex2f(x_1, y_1);
glVertex2f(x, y_1);
glVertex2f(x, y);
glEnd();
если не знаешь куда этот код вставить читай первые 5 уроков NеHе. Для того чтобы сделать бекграунд нужно в ortho режиме (т.е. в screen2d()) нарисовать прямоугольник методом glBegin(GL_QUADS);
Код:
glBegin(GL_QUADS);
glVertex2f(x, y);
glVertex2f(x_1, y);
glVertex2f(x_1, y_1);
glVertex2f(x, y_1);
glVertex2f(x, y);
glEnd();
с координатами от x=0, y=0; x_1=WindowW, y_1=WindowH.
Но это всё годится для игр, где не будет стандартных виндуосовских кнопочек, окошек для ввода и т.д.