Беглым взглядом могу сказать что проблема у вас в скорее всего в том самом "переходе" от 2D к 3D. Точнее, в его отсутствии.
Недостаточно просто взять и вписать трёхмерные координаты. Вам нужно доучить матчать по
видовым и проекционным матрицам и задействовать
glMatrixMode с последующей загрузкой нужной матрицы. Сейчас вы, грубо говоря, не рисуете трёхмерный куб - вы рисуете его как двухмерную фигуру, не задействуя третью координату так как вы хотели бы.
И да, ещё важный момент. Не имел дела с указанной вами библиотекой, но похоже что вы сейчас пользуетесь вызовами OpenGL старых версий, и работаете в "старой" модели программирования. В целях обучения это может даже и лучше, но это не готовит вас к современному OpenGL из реального мира. В современном подходе для матричных преобразований используются шейдеры (и это лишь ничтожная часть того что можно сейчас делать с помощью шейдеров различных типов), а координаты примитивов задаются не последовательными вызовами glVertex (что крайне неэффективно с учётом производительности современных GPU), а построением буферов данных заранее и отрисовкой всего набора вершин целиком (см.
glDrawElements и прочие функции).
Так что если вы делаете это всё исключительно для понимания
мат. части - в принципе пока вам достаточно и этого, но если вам нужны актуальные умения - найдите книги/примеры/уроки посвежее. Это можно сделать и позже, когда вы будете к этому лучше подготовлены (к сожалению, современный OpenGL не может быть простым, хотя бы из-за очень больших возможностей современных граф. процессоров).