Как сделать рендеринг с изометрической точки зрения?

Возможный дубликат:
истинная изометрическая проекция с OpenGL

Я хочу рендерить, используя тот же изометрический рендеринг, который использует Blender3d, как я могу это сделать? Возможно ли это просто с помощью вызова glMultMatrix()? Я попробовал поискать в Google, но не смог найти никаких рабочих матриц, которые привели бы к такому режиму рендеринга. Я попробовал это http://en.wikipedia.org/wiki/Isometric_projection но это просто показалось мне странным.

Это матрица, которую я сейчас использую, которая рендерится с нормальной точки зрения:

    GLdouble f = cotan(fovy/2.0);
    GLdouble aspect = (GLdouble)width/(GLdouble)height;

    IsoMatrix.x[0] = f/aspect;
    IsoMatrix.y[0] = 0;
    IsoMatrix.z[0] = 0;
    IsoMatrix.w[0] = 0;

    IsoMatrix.x[1] = 0;
    IsoMatrix.y[1] = f;
    IsoMatrix.z[1] = 0;
    IsoMatrix.w[1] = 0;

    IsoMatrix.x[2] = 0;
    IsoMatrix.y[2] = 0;
    IsoMatrix.z[2] = (zfar+znear)/(znear-zfar);
    IsoMatrix.w[2] = (2.0*zfar*znear)/(znear-zfar);

    IsoMatrix.x[3] = 0;
    IsoMatrix.y[3] = 0;
    IsoMatrix.z[3] = -1;
    IsoMatrix.w[3] = 0;

    glMultMatrixd((GLdouble *)&IsoMatrix);

Как я могу изменить это так, чтобы это привело к: http://rvzenteno.files.wordpress.com/2008/10/rvz_018.jpg?

1 ответ

Решение

Проще использовать glOrtho, а затем вращать оси:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-10.0f, 10.0f, -10.0f, 10.0f, -10.0f, 10.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(35.264f, 1.0f, 0.0f, 0.0f);
glRotatef(-45.0f, 0.0f, 1.0f, 0.0f);
Другие вопросы по тегам