OpenGL depth buffer (z buffer, буфер глубины, z index)

Привет арчеводы. У меня возникла проблема с OpenGL. Точнее с его использованием в его разработке. Понимаю, что с такими вопросами надо на gamedev или другие форумы, посвящеенные OpenGL или игрострою, но я решил все-таки обратиться на "родной" форум.

В общем задача проста. Я хочу нарисовать один квадрат позади другого. Для этого, насколько мне известно, надо использовать очистить буфер глубины, активировать его и задать значения по оси Z для вершин. Если имеет значение, то использую wxWidgets.

glClearColor(0.1f, 0.1f, 0.1f, 1.0f);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glEnable(GL_DEPTH_TEST);
    glFrustum(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
    short w = GetSize().GetWidth(); // Get size of canvas.
    short h = GetSize().GetHeight();
    glViewport(0, 0, (GLint)w, (GLint)h);
    std::cout<<w<<h<<"\n";
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glColor3f(0.0f,0.0f,0.0f);  // Black.
    GraphicManager::DrawRectangle(-0.1f,0.1f,-0.1f,0.1f,0.0f);
    glColor3f(0.0f,0.0f,1.0f);  // Blue.
    GraphicManager::DrawRectangle(-0.1f,0.1f,-0.1f,0.1f,0.9f);
    Refresh(); //функция перерисовки, в ней SwapBuffers происходит

Однако черный квадрат «прячется» за синий. Пробовал повернуть сцену, но тогда картина, просто, привоидит в шок. Поворачивая сцену на 180°, синий квадрат все равно перед черным становится! Я на OpenGL и раньше писал, и вот снова понадобилось, но в этот раз просто ужас какой-то. Помогите, может я что-то забыл. Всю мат. часть уже перечитал =( «OpenGL Суперкнига» и «Красная книга OpenGL» – мое единственное чтиво в последнюю неделю.
Кому нужна подстветка синтаксиса и форматирование, копию кода я сделал на pastebin
Заранее спасибо за помощь!
Еще выснилось, что glFrustrum оказывается не срабатывает и после его вызовы glGetError() возвращает 1281 ошибку
Загуглите: cube mark 3d,Linux version 0.8a
Может где на этот бенч исходники валяются, там кубы летают, но должен быть з-буфффер
Как много «ф» =)
Я сейчас ковыряю исходники примеров wxWidgets с OpenGL. Там все работает. Z buffer есть. Кстати frustum выдавал ошибку из-за того, что я в него по Z отрицательное значение передал.
 
Зарегистрироваться или войдите чтобы оставить сообщение.