Пишу программу на C#, где есть некий кубик. Использую библиотеку
opentk для opengl.
Проблема в том, что какую грань позже нарисую, та и будет видна пользователю. То есть, как-будто никакого z-order'а нету.
Вот куски кода:
/*определение переменных*/
int zNear = 1;
int zFar = 500;
float viewX = 61;
float viewY = 61;
float viewZ = 61;
...
/*настройка opengl*/
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
Matrix4 p = Matrix4.CreatePerspectiveFieldOfView((float)(viewAngle * Math.PI / 180), 1, zNear, zFar);
GL.MatrixMode(MatrixMode.Projection);
GL.LoadMatrix(ref p);
Matrix4 look = Matrix4.LookAt(viewX, viewY, viewZ, 0, 0, 0, 0, 1, 0);
GL.MatrixMode(MatrixMode.Modelview);
GL.LoadMatrix(ref look);
...
/*рисование кубика*/
GL.PushMatrix();
/*разные вращения кубика*/
GL.Translate(offset, offset, offset);
GL.Rotate(angle.X, Vector3.UnitX);
GL.Translate(-offset, -offset, -offset);
/*рисование граней*/
GL.Begin(BeginMode.Polygon);
GL.Vertex3(0, 0, 0);
GL.Vertex3(0, 0, w);
GL.Vertex3(w, 0, w);
GL.Vertex3(w, 0, 0);
GL.End();
//и т.д.
GL.PopMatrix();
Что неправильно? Гугление не помогло.
Решение нужно добавить:
GL.Enable(EnableCap.DepthTest);